
WhereInfo *
sqlite3WhereBegin(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,
                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)

{
  WhereClause *pWVar1;
  u32 *puVar2;
  SrcList_item *pSVar3;
  Bitmask *pBVar4;
  u8 uVar5;
  short sVar6;
  int iVar7;
  Vdbe *p;
  sqlite3 *db;
  Table *pTVar8;
  sqlite3 *db_00;
  Vdbe *p_00;
  Vdbe *p1;
  byte *pbVar9;
  VTable *zP4;
  code *pcVar10;
  ushort uVar11;
  u8 uVar12;
  WhereInfo *pWVar13;
  byte bVar14;
  u16 uVar15;
  uint uVar16;
  int iVar17;
  uint uVar18;
  Token *pToken;
  Expr *pEVar19;
  WhereClause *pWVar20;
  Parse *pPVar21;
  Parse *pPVar22;
  int iVar23;
  CollSeq *pCVar24;
  int iVar25;
  Op *pOVar26;
  uint uVar27;
  Index *pIVar28;
  WhereTerm *pWVar29;
  u32 uVar30;
  WhereTerm *pWVar31;
  WhereTerm *pWVar32;
  u8 uVar33;
  Expr *pExpr;
  uint uVar34;
  uint uVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  ExprList *pEVar38;
  Table **ppTVar39;
  ushort wctrlFlags_00;
  SrcList *pSrc;
  int iVar40;
  uint uVar41;
  byte bVar42;
  int iVar43;
  WhereLevel *pWVar44;
  i16 *piVar45;
  char *pcVar46;
  WhereLoop *pWVar47;
  SrcList_item *pSVar48;
  i16 *piVar49;
  int unaff_EDI;
  Index *pIVar50;
  SrcList *pSVar51;
  Token *op;
  int in_GS_OFFSET;
  bool bVar52;
  undefined8 uVar53;
  Bitmask BVar54;
  ulonglong uVar55;
  Expr *pEVar56;
  Index *dequote;
  undefined1 in_stack_ffffff24;
  undefined1 uVar57;
  undefined1 in_stack_ffffff25;
  undefined1 uVar58;
  undefined2 in_stack_ffffff26;
  undefined2 uVar59;
  short sVar60;
  Parse *in_stack_ffffff28;
  Parse *pParse_00;
  WhereInfo *local_d0;
  undefined8 local_cc;
  int local_c0;
  uint local_bc;
  Vdbe *local_b8;
  Parse *local_b4;
  uint local_a8;
  Parse *local_a0;
  Parse *local_88;
  char *local_84;
  uint local_78;
  Expr *local_74;
  i16 local_70;
  WhereLoopBuilder sWLB;
  Walker w;
  
  uVar53 = __x86_get_pc_thunk_di();
  pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20);
  pParse_00 = (Parse *)uVar53;
  local_b4 = pParse;
  iVar7 = *(int *)(in_GS_OFFSET + 0x14);
  p = pParse_00->pVdbe;
  db = pParse_00->db;
  uVar16 = 0;
  do {
    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;
    uVar16 = uVar16 + 4;
  } while (uVar16 < 0x1c);
  if ((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)) {
    local_b4 = pParse;
  }
  sWLB.pOrderBy = (ExprList *)local_b4;
  wctrlFlags_00 = (ushort)pWhere & 0xfeff;
  if ((db->dbOptFlags & 0x10) == 0) {
    wctrlFlags_00 = (ushort)pWhere;
  }
  local_a0 = (Parse *)pSrc->nSrc;
  if (0x40 < (int)local_a0) {
    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);
    local_d0 = (WhereInfo *)0x0;
    goto LAB_000a0bf2;
  }
  uVar11 = wctrlFlags_00 & 0x20;
  if ((wctrlFlags_00 & 0x20) == 0) {
    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;
  }
  else {
    uVar16 = 0x330;
    local_a0 = (Parse *)0x1;
  }
  if (db->mallocFailed == '\0') {
    dequote = (Index *)0x9fc7c;
    local_d0 = (WhereInfo *)
               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,
                                             CONCAT22(in_stack_ffffff26,
                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))
                                            ));
    if (db->mallocFailed == '\0') {
      local_d0->pTabList = pSrc;
      local_d0->pParse = pParse_00;
      local_d0->pOrderBy = (ExprList *)local_b4;
      local_d0->pResultSet = (ExprList *)pTabList;
      local_d0->pWhere = pExpr;
      local_d0->aiCurOnePass[1] = -1;
      local_d0->aiCurOnePass[0] = -1;
      local_d0->nLevel = (u8)local_a0;
      iVar17 = pParse_00->nLabel + -1;
      pParse_00->nLabel = iVar17;
      local_d0->iContinue = iVar17;
      local_d0->iBreak = iVar17;
      local_d0->wctrlFlags = wctrlFlags_00;
      local_d0->iLimit = (LogEst)pOrderBy;
      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;
      local_d0->nOBSat = '\0';
      local_d0->sorted = '\0';
      local_d0->eOnePass = '\0';
      local_d0->untestedTerms = '\0';
      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;
      *(undefined4 *)&local_d0->nRowOut = 0;
      uVar18 = 0;
      do {
        *(undefined4 *)(uVar34 + uVar18) = 0;
        uVar18 = uVar18 + 4;
      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));
      local_b8 = (Vdbe *)local_d0->a;
      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));
      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);
      pEVar56 = (Expr *)0x0;
      memset(local_b8,0,(size_t)pToken);
      pWVar1 = &local_d0->sWC;
      pWVar47->aLTerm = pWVar47->aLTermSpace;
      pWVar47->nLTerm = 0;
      pWVar47->nLSlot = 3;
      pWVar47->wsFlags = 0;
      (local_d0->sWC).a = (local_d0->sWC).aStatic;
      (local_d0->sMaskSet).n = 0;
      (local_d0->sWC).pWInfo = local_d0;
      (local_d0->sWC).hasOr = '\0';
      (local_d0->sWC).pOuter = (WhereClause *)0x0;
      (local_d0->sWC).nTerm = 0;
      (local_d0->sWC).nSlot = 8;
      sWLB.pWInfo = local_d0;
      sWLB.pWC = pWVar1;
      sWLB.pNew = pWVar47;
      sqlite3WhereSplit(pWVar1,pExpr,',');
      if (local_a0 == (Parse *)0x0) {
        if (local_b4 != (Parse *)0x0) {
          local_d0->nOBSat = (i8)local_b4->db;
        }
        if ((wctrlFlags_00 & 0x100) != 0) {
          local_d0->eDistinct = '\x01';
        }
        pToken = (Token *)(unaff_EDI + 0x59c2c);
        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);
      }
      else {
        local_bc = 0;
        ppTVar39 = &pSrc->a[0].pTab;
        do {
          iVar17 = (int)ppTVar39[6];
          iVar43 = (local_d0->sMaskSet).n;
          (local_d0->sMaskSet).n = iVar43 + 1;
          (local_d0->sMaskSet).ix[iVar43] = iVar17;
          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&
              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,
              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {
            pTVar8 = *ppTVar39;
            iVar17 = 0;
            pIVar50 = (Index *)0x0;
            uVar57 = SUB41(pTVar8,0);
            uVar58 = (undefined1)((uint)pTVar8 >> 8);
            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);
            do {
              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));
              iVar40 = (int)*(short *)(iVar43 + 0x2a);
              if (iVar40 <= iVar17) {
LAB_000a0e38:
                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));
                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);
                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));
                dequote = pIVar50;
                break;
              }
              iVar23 = iVar17;
              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {
                iVar23 = iVar23 + 1;
                if (iVar23 == iVar40) goto LAB_000a0e38;
              }
              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);
              if (pEVar19 == (Expr *)0x0) break;
              iVar17 = iVar23 + 1;
              pEVar19->iTable = (int)ppTVar39[6];
              pEVar19->iColumn = iVar23;
              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));
              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;
              if (pEVar19 != (Expr *)0x0) {
                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);
              }
              pIVar50 = (Index *)((int)&pIVar50->zName + 1);
              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);
              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);
              whereClauseInsert(pWVar1,pEVar19,1);
            } while ((int)pIVar50 < pEVar38->nExpr);
          }
          local_bc = local_bc + 1;
          ppTVar39 = ppTVar39 + 0x11;
        } while ((int)local_bc < pSrc->nSrc);
      }
      iVar17 = (local_d0->sWC).nTerm;
      uVar57 = (undefined1)((uint)iVar17 >> 8);
      uVar59 = (undefined2)((uint)iVar17 >> 0x10);
      iVar17 = iVar17 + -1;
      if (-1 < iVar17) {
        do {
          iVar43 = iVar17 + -1;
          dequote = (Index *)0x9ff76;
          exprAnalyze(pSrc,pWVar1,iVar17);
          iVar17 = iVar43;
        } while (iVar43 != -1);
      }
      if (db->mallocFailed == '\0') {
        uVar33 = '\0';
        if (0 < (sWLB.pWC)->nTerm) {
          iVar17 = 0;
          pWVar20 = sWLB.pWC;
          do {
            pWVar29 = pWVar20->a + iVar17;
            if (((pWVar29->wtFlags & 2) == 0) &&
               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {
              pEVar56 = pWVar29->pExpr;
              if (local_a0 != (Parse *)0x0) {
                uVar16 = 0;
                do {
                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;
                  uVar16 = uVar16 + 4;
                } while (uVar16 < 0x1c);
                w.eCode = '\x01';
                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);
                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);
                if (pEVar56 != (Expr *)0x0) {
                  dequote = (Index *)0xa0018;
                  walkExpr(&w,pEVar56);
                  pWVar20 = sWLB.pWC;
                  if (w.eCode == '\0') goto LAB_000a0030;
                }
                pEVar56 = pWVar29->pExpr;
              }
              dequote = (Index *)0x10;
              pToken = (Token *)local_d0->iBreak;
              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);
              pWVar29->wtFlags = pWVar29->wtFlags | 4;
              pWVar20 = sWLB.pWC;
            }
LAB_000a0030:
            iVar17 = iVar17 + 1;
          } while (iVar17 < pWVar20->nTerm);
        }
        if ((wctrlFlags_00 & 0x100) != 0) {
          if (pSrc->nSrc == 1) {
            iVar17 = pSrc->a[0].iCursor;
            if (0 < pTabList->nSrc) {
              ppTVar39 = (Table **)&pTabList->nAlloc;
              iVar43 = 0;
LAB_000a1290:
              pcVar46 = (char *)*ppTVar39;
              do {
                if (pcVar46 == (char *)0x0) {
LAB_000144c2:
                    /* WARNING: Does not return */
                  pcVar10 = (code *)invalidInstructionException();
                  (*pcVar10)();
                }
                uVar16 = *(uint *)(pcVar46 + 4);
                while( true ) {
                  if ((uVar16 & 0x1000) == 0) {
                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&
                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;
                    iVar43 = iVar43 + 1;
                    ppTVar39 = ppTVar39 + 5;
                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;
                    goto LAB_000a1290;
                  }
                  if ((uVar16 & 0x40000) == 0) break;
                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);
                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;
                  uVar16 = *(uint *)(pcVar46 + 4);
                }
                pcVar46 = *(char **)(pcVar46 + 0xc);
              } while( true );
            }
LAB_000a12dd:
            pIVar50 = (pSrc->a[0].pTab)->pIndex;
            if (pIVar50 != (Index *)0x0) {
LAB_000a12fb:
              if (pIVar50->onError == '\0') goto LAB_000a12f0;
              if (pIVar50->nKeyCol != 0) {
                uVar16 = 0;
LAB_000a132f:
                pToken = (Token *)0x2;
                dequote = pIVar50;
                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);
                if (pWVar29 == (WhereTerm *)0x0) {
                  pbVar9 = (byte *)pIVar50->azColl[uVar16];
                  if (0 < pTabList->nSrc) {
                    iVar43 = 0;
                    do {
                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);
                      if (pEVar56 == (Expr *)0x0) {
sqlite3WhereBegin_cold_936:
                    /* WARNING: Does not return */
                        pcVar10 = (code *)invalidInstructionException();
                        (*pcVar10)();
                      }
                      uVar30 = pEVar56->flags;
                      pEVar19 = pEVar56;
                      while ((uVar30 & 0x1000) != 0) {
                        if ((uVar30 & 0x40000) == 0) {
                          pEVar19 = pEVar19->pLeft;
                        }
                        else {
                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;
                        }
                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;
                        uVar30 = pEVar19->flags;
                      }
                      if (((pEVar19->op == 0x9e) &&
                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&
                         (iVar17 == pEVar19->iTable)) {
                        dequote = (Index *)0xa140e;
                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);
                        if (pCVar24 == (CollSeq *)0x0) {
                          pCVar24 = pParse_00->db->pDfltColl;
                        }
                        bVar42 = *pCVar24->zName;
                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==
                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {
                          if (bVar42 == 0) goto LAB_000a14dd;
                          iVar40 = 1;
                          while (bVar42 = pCVar24->zName[iVar40],
                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==
                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {
                            iVar40 = iVar40 + 1;
                            if (bVar42 == 0) goto LAB_000a14dd;
                          }
                        }
                      }
                      iVar43 = iVar43 + 1;
                      if (pTabList->nSrc <= iVar43) {
                        uVar18 = (uint)pIVar50->nKeyCol;
                        goto LAB_000a13d9;
                      }
                    } while( true );
                  }
                  goto LAB_000a14f9;
                }
                goto LAB_000a1320;
              }
LAB_000a13e1:
              local_d0->eDistinct = '\x01';
              goto LAB_000a0050;
            }
          }
LAB_000a1530:
          if (local_b4 == (Parse *)0x0) {
            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;
            local_d0->pOrderBy = (ExprList *)pTabList;
          }
        }
LAB_000a0050:
        pWVar47 = sWLB.pNew;
        pWVar13 = sWLB.pWInfo;
        pSVar51 = (sWLB.pWInfo)->pTabList;
        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&
           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&
            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {
          iVar17 = pSVar51->a[0].iCursor;
          pWVar1 = &(sWLB.pWInfo)->sWC;
          (sWLB.pNew)->nSkip = 0;
          (sWLB.pNew)->wsFlags = 0;
          dequote = (Index *)0x0;
          pToken = (Token *)0x82;
          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);
          if (pWVar29 == (WhereTerm *)0x0) {
            pIVar50 = pTVar8->pIndex;
            if (pIVar50 == (Index *)0x0) {
              uVar30 = pWVar47->wsFlags;
            }
            else {
              do {
                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&
                   (pIVar50->nKeyCol < 4)) {
                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);
                  if (pIVar50->nKeyCol == 0) {
                    uVar16 = 0;
                  }
                  else {
                    uVar18 = 0;
                    do {
                      pToken = op;
                      dequote = pIVar50;
                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);
                      if (pWVar29 == (WhereTerm *)0x0) {
                        uVar16 = (uint)pIVar50->nKeyCol;
                        break;
                      }
                      pWVar47->aLTerm[uVar18] = pWVar29;
                      uVar16 = (uint)pIVar50->nKeyCol;
                      uVar18 = uVar18 + 1;
                    } while ((int)uVar18 < (int)uVar16);
                    if (uVar18 != uVar16) goto LAB_000a1960;
                  }
                  pWVar47->wsFlags = 0x1201;
                  uVar15 = (u16)uVar16;
                  if (((pIVar50->field_0x37 & 0x20) == 0) &&
                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &
                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||
                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {
                    pWVar47->nLTerm = uVar15;
                    (pWVar47->u).btree.nEq = uVar15;
                    (pWVar47->u).btree.pIndex = pIVar50;
                    pWVar47->rRun = 0x27;
                  }
                  else {
                    (pWVar47->u).btree.pIndex = pIVar50;
                    pWVar47->wsFlags = 0x1241;
                    pWVar47->nLTerm = uVar15;
                    (pWVar47->u).btree.nEq = uVar15;
                    pWVar47->rRun = 0x27;
                  }
                  goto LAB_000a1a26;
                }
LAB_000a1960:
                pIVar50 = pIVar50->pNext;
              } while (pIVar50 != (Index *)0x0);
              uVar30 = pWVar47->wsFlags;
            }
          }
          else {
            pWVar47->wsFlags = 0x1101;
            *pWVar47->aLTerm = pWVar29;
            pWVar47->nLTerm = 1;
            (pWVar47->u).btree.nEq = 1;
            pWVar47->rRun = 0x21;
            uVar30 = pWVar47->wsFlags;
          }
          if (uVar30 == 0) {
            pSVar51 = (sWLB.pWInfo)->pTabList;
            goto LAB_000a0070;
          }
LAB_000a1a26:
          pWVar47->nOut = 1;
          pWVar13->a[0].pWLoop = pWVar47;
          *(undefined4 *)&pWVar47->maskSelf = 1;
          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;
          pWVar13->nRowOut = 1;
          pWVar13->a[0].iTabCur = iVar17;
          if (pWVar13->pOrderBy != (ExprList *)0x0) {
            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;
          }
          if ((pWVar13->wctrlFlags & 0x100) != 0) {
            pWVar13->eDistinct = '\x01';
          }
LAB_000a0239:
          if (local_d0->pOrderBy == (ExprList *)0x0) {
LAB_000a0ea8:
            if ((db->flags & 0x1000) != 0) {
              *(undefined4 *)&local_d0->revMask = 0xffffffff;
              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;
            }
          }
          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {
            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {
              local_cc = 0xffffffffffffffff;
            }
            else {
              local_cc = 0xffffffffffffffff;
              if ((db->dbOptFlags & 0x100) == 0) {
                dequote = (Index *)0xa1746;
                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);
                if (sWLB.pOrderBy != (ExprList *)0x0) {
                  dequote = (Index *)0xa1764;
                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);
                  uVar55 = uVar55 | BVar54;
                }
                local_b4 = (Parse *)(uVar55 >> 0x20);
                local_bc = (uint)uVar55;
                local_cc = 0xffffffffffffffff;
                iVar17 = local_d0->nLevel - 1;
                uVar57 = (undefined1)iVar17;
                uVar58 = (undefined1)((uint)iVar17 >> 8);
                uVar59 = (undefined2)((uint)iVar17 >> 0x10);
                if (0 < iVar17) {
                  do {
                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));
                    pWVar47 = local_d0->a[iVar17].pWLoop;
                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&
                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {
                      uVar16 = (uint)pWVar47->maskSelf;
                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);
                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {
                        pWVar29 = (sWLB.pWC)->a;
                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;
                        pWVar32 = pWVar29;
                        if (pWVar29 < pWVar31) {
                          do {
                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||
                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&
                               (((pWVar32->pExpr->flags & 1) == 0 ||
                                ((int)pWVar32->pExpr->iRightJoinTable !=
                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {
                              if (pWVar32 < pWVar31) goto LAB_000a17a8;
                              break;
                            }
                            pWVar32 = pWVar32 + 1;
                          } while (pWVar32 < pWVar31);
                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,
                                              ~uVar16 & (uint)(WhereInfo *)local_cc);
                          while( true ) {
                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||
                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {
                              pWVar29->wtFlags = pWVar29->wtFlags | 4;
                            }
                            pWVar29 = pWVar29 + 1;
                            if (pWVar31 <= pWVar29) break;
                            uVar16 = (uint)pWVar47->maskSelf;
                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);
                          }
                        }
                        else {
                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,
                                              ~uVar16 & (uint)(WhereInfo *)local_cc);
                        }
                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));
                        bVar42 = local_d0->nLevel;
                        if (bVar42 - 1 != iVar43) {
                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),
                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,
                                  ((bVar42 - 1) - iVar43) * 0x44);
                          bVar42 = local_d0->nLevel;
                        }
                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);
                        local_d0->nLevel = bVar42 - 1;
                      }
                    }
LAB_000a17a8:
                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;
                    uVar57 = (undefined1)iVar17;
                    uVar58 = (undefined1)((uint)iVar17 >> 8);
                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);
                  } while (iVar17 != 0);
                }
              }
            }
            puVar2 = &local_d0->pParse->nQueryLoop;
            *puVar2 = *puVar2 + (int)local_d0->nRowOut;
            bVar42 = 0;
            if ((wctrlFlags_00 & 4) != 0) {
              pWVar47 = local_d0->a[0].pWLoop;
              uVar16 = pWVar47->wsFlags;
              if ((uVar16 & 0x1000) == 0) {
                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||
                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;
                uVar33 = '\x02';
              }
              else {
                uVar33 = '\x01';
              }
              local_d0->eOnePass = uVar33;
              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {
                bVar42 = 0;
                if ((wctrlFlags_00 & 8) != 0) {
                  bVar42 = 8;
                }
                pWVar47->wsFlags = uVar16 & 0xffffffbf;
              }
            }
LAB_000a02e0:
            if ((int)local_a0 < 1) {
              local_d0->iTop = p->nOp;
              if (db->mallocFailed == '\0') goto LAB_000a0bf2;
            }
            else {
              pWVar44 = (WhereLevel *)local_b8;
              do {
                bVar14 = pWVar44->iFrom;
                pTVar8 = pSrc->a[bVar14].pTab;
                if (pTVar8->pSchema == (Schema *)0x0) {
                  uVar57 = 0xc0;
                  uVar58 = 0xbd;
                  sVar60 = -0x10;
                }
                else {
                  dequote = (Index *)0xa032f;
                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);
                  uVar57 = (undefined1)iVar17;
                  uVar58 = (undefined1)((uint)iVar17 >> 8);
                  sVar60 = (short)((uint)iVar17 >> 0x10);
                }
                pWVar47 = pWVar44->pWLoop;
                uVar16 = pWVar47->wsFlags;
                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {
                  if ((uVar16 & 0x400) == 0) {
                    if (pTVar8->nModuleArg == 0) {
                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {
                        iVar43 = 0x6d;
                        iVar17 = pSrc->a[bVar14].iCursor;
                        if (local_d0->eOnePass != '\0') {
                          local_d0->aiCurOnePass[0] = iVar17;
                          iVar43 = 0x6e;
                          iVar17 = pSrc->a[bVar14].iCursor;
                        }
                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),
                                         pTVar8,iVar43);
                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&
                           ((pTVar8->tabFlags & 0x20) == 0)) {
                          pBVar4 = &pSrc->a[bVar14].colUsed;
                          uVar16 = (uint)*pBVar4;
                          uVar18 = *(uint *)((int)pBVar4 + 4);
                          pcVar46 = (char *)0x0;
                          if (uVar18 != 0 || uVar16 != 0) {
                            pcVar46 = (char *)0x0;
                            do {
                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;
                              uVar18 = uVar18 >> 1;
                              pcVar46 = pcVar46 + 1;
                            } while (uVar18 != 0 || uVar16 != 0);
                          }
                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);
                        }
                        if (0 < p->nOp) {
                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;
                        }
                        uVar16 = pWVar47->wsFlags;
                      }
                      else {
                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),
                                         pTVar8->tnum,'\0',pTVar8->zName);
                        uVar16 = pWVar47->wsFlags;
                      }
                    }
                  }
                  else {
                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));
                        zP4 = zP4->pNext) {
                    }
                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);
                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);
                    uVar16 = pWVar47->wsFlags;
                  }
                }
                if ((uVar16 & 0x200) != 0) {
                  pIVar50 = (pWVar47->u).btree.pIndex;
                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||
                     (uVar11 == 0)) {
                    pEVar38 = pOrderBy;
                    if (local_d0->eOnePass == '\0') {
                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {
                        iVar17 = 0x6d;
                        pEVar38 = (ExprList *)pParse_00->nTab;
                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);
                        pWVar44->iIdxCur = (int)pEVar38;
                      }
                      else {
                        iVar17 = 0x6c;
                        pWVar44->iIdxCur = (int)pOrderBy;
                      }
                    }
                    else {
                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;
                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {
                        do {
                          pIVar28 = pIVar28->pNext;
                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);
                          if (pIVar28 == (Index *)0x0) break;
                        } while (pIVar50 != pIVar28);
                      }
                      iVar17 = 0x6e;
                      local_d0->aiCurOnePass[1] = (int)pEVar38;
                      pWVar44->iIdxCur = (int)pEVar38;
                    }
                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,
                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));
                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);
                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&
                        ((local_d0->wctrlFlags & 1) == 0)) &&
                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {
                      p->aOp[p->nOp + -1].p5 = 2;
                    }
                  }
                  else {
                    pWVar44->iIdxCur = pWVar44->iTabCur;
                  }
                }
                if (-1 < sVar60) {
                  dequote = (Index *)0xa0402;
                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));
                }
                pWVar44 = pWVar44 + 1;
              } while (pWVar44 != local_d0->a + (int)local_a0);
              local_d0->iTop = p->nOp;
              if (db->mallocFailed == '\0') {
                local_88 = (Parse *)0x0;
                do {
                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {
                    bVar42 = (byte)local_b8->pc;
                    p_00 = pParse_00->pVdbe;
                    pIVar50 = (Index *)0x0;
                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);
                    pTVar8 = pSrc->a[bVar42].pTab;
                    pWVar29 = (local_d0->sWC).a;
                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);
                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;
                    local_c0 = 0;
                    if (pWVar29 < pWVar32) {
                      bVar52 = false;
                      uVar18 = 0;
                      local_a8 = 0;
                      local_74 = (Expr *)0x0;
                      do {
                        while( true ) {
                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0
                              ) && ((pWVar29->wtFlags & 2) == 0)) {
                            pEVar56 = pWVar29->pExpr;
                            uVar57 = SUB41(pEVar56,0);
                            uVar58 = (undefined1)((uint)pEVar56 >> 8);
                            sVar60 = (short)((uint)pEVar56 >> 0x10);
                            if ((pEVar56->flags & 1) == 0) {
                              w.eCode = '\x03';
                              w.xExprCallback =
                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);
                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;
                              w.xSelectCallback =
                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);
                              dequote = (Index *)0xa0f43;
                              walkExpr(&w,pEVar56);
                              if (w.eCode != '\0') {
                                pEVar56 = exprDup(pParse_00->db,
                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0
                                                  ,(u8 **)0x0);
                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);
                              }
                            }
                          }
                          pIVar50 = local_cc._4_4_;
                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);
                          if (iVar43 != 0) break;
LAB_000a05b6:
                          pWVar29 = pWVar29 + 1;
                          if (pWVar32 <= pWVar29) goto LAB_000a0663;
                        }
                        uVar16 = (pWVar29->u).leftColumn;
                        uVar57 = 0;
                        uVar58 = 0;
                        sVar60 = 0;
                        in_stack_ffffff28 = (Parse *)0x80000000;
                        if ((int)uVar16 < 0x40) {
                          bVar14 = (byte)uVar16 & 0x1f;
                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));
                          pPVar22 = pPVar21;
                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);
                          if ((uVar16 & 0x20) != 0) {
                            pPVar22 = (Parse *)0x0;
                            in_stack_ffffff28 = pPVar21;
                          }
                          uVar57 = SUB41(pPVar22,0);
                          uVar58 = (undefined1)((uint)pPVar22 >> 8);
                          sVar60 = (short)((uint)pPVar22 >> 0x10);
                        }
                        if (!bVar52) {
                          dequote = (Index *)pTVar8->aCol[uVar16].zName;
                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);
                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);
                        }
                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&
                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {
                          iVar43 = local_c0 + 1;
                          if ((int)(uint)pWVar47->nLSlot < iVar43) {
                            dequote = (Index *)0xa058e;
                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);
                            if (iVar40 != 0) goto LAB_000a0ba5;
                          }
                          bVar52 = true;
                          pWVar47->aLTerm[local_c0] = pWVar29;
                          local_a8 = local_a8 | (uint)in_stack_ffffff28;
                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));
                          local_c0 = iVar43;
                          goto LAB_000a05b6;
                        }
                        bVar52 = true;
                        pWVar29 = pWVar29 + 1;
                      } while (pWVar29 < pWVar32);
LAB_000a0663:
                      uVar18 = ~uVar18;
                      uVar16 = ~local_a8 | 0x80000000;
                    }
                    else {
                      uVar18 = 0xffffffff;
                      uVar16 = 0xffffffff;
                      local_c0._0_2_ = 0;
                      local_74 = (Expr *)0x0;
                    }
                    pWVar47->nLTerm = (u16)local_c0;
                    (pWVar47->u).btree.nEq = (u16)local_c0;
                    pWVar47->wsFlags = 0x4241;
                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);
                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;
                    uVar16 = uVar16 & uVar34;
                    sVar6 = pTVar8->nCol;
                    uVar27 = 0x3f;
                    if (sVar6 < 0x40) {
                      uVar27 = (int)sVar6;
                    }
                    if (0 < sVar6) {
                      uVar57 = (undefined1)uVar34;
                      uVar58 = (undefined1)(uVar34 >> 8);
                      sVar60 = (short)(uVar34 >> 0x10);
                      uVar35 = 0;
                      do {
                        bVar14 = (byte)uVar35 & 0x1f;
                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;
                        if ((uVar35 & 0x20) != 0) {
                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);
                        }
                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);
                        uVar35 = uVar35 + 1;
                      } while (uVar27 != uVar35);
                    }
                    if ((int)uVar34 < 0) {
                      local_c0 = local_c0 + -0x3f + (int)sVar6;
                    }
                    pIVar50 = sqlite3AllocateIndexObject
                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);
                    if (pIVar50 != (Index *)0x0) {
                      iVar43 = 0;
                      uVar57 = 0;
                      uVar58 = 0;
                      uVar59 = 0;
                      (pWVar47->u).btree.pIndex = pIVar50;
                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);
                      pIVar50->pTable = pTVar8;
                      pWVar29 = (local_d0->sWC).a;
                      if (pWVar29 < pWVar32) {
                        local_78 = 0;
                        do {
                          while( true ) {
                            iVar40 = iVar43 * 2;
                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);
                            if (iVar23 != 0) break;
LAB_000a07a0:
                            pWVar29 = pWVar29 + 1;
                            if (pWVar32 <= pWVar29) goto LAB_000a0858;
                          }
                          uVar35 = (pWVar29->u).leftColumn;
                          uVar34 = 0;
                          uVar41 = 0x80000000;
                          if ((int)uVar35 < 0x40) {
                            bVar52 = (uVar35 & 0x20) == 0;
                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);
                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);
                          }
                          if ((local_78 & uVar41) != 0 ||
                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)
                          goto LAB_000a07a0;
                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;
                          uVar57 = (undefined1)uVar34;
                          uVar58 = (undefined1)(uVar34 >> 8);
                          uVar59 = (undefined2)(uVar34 >> 0x10);
                          local_70 = (i16)uVar35;
                          pEVar56 = pWVar29->pExpr;
                          local_78 = local_78 | uVar41;
                          pIVar50->aiColumn[iVar43] = local_70;
                          dequote = (Index *)0xa082b;
                          pCVar24 = sqlite3BinaryCompareCollSeq
                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);
                          pcVar46 = &UNK_00064bb9 + unaff_EDI;
                          if (pCVar24 != (CollSeq *)0x0) {
                            pcVar46 = pCVar24->zName;
                          }
                          iVar40 = iVar40 + 2;
                          pWVar29 = pWVar29 + 1;
                          pIVar50->azColl[iVar43] = pcVar46;
                          iVar43 = iVar43 + 1;
                        } while (pWVar29 < pWVar32);
LAB_000a0858:
                        iVar23 = iVar43 * 4;
                        uVar57 = (undefined1)iVar23;
                        uVar58 = (undefined1)((uint)iVar23 >> 8);
                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);
                        pPVar22 = pParse_00;
                      }
                      else {
                        iVar40 = 0;
                        pPVar22 = pParse_00;
                      }
                      local_84 = &UNK_00064bb9 + unaff_EDI;
                      piVar49 = pIVar50->aiColumn;
                      if (sVar6 < 1) {
                        piVar45 = (i16 *)((int)piVar49 + iVar40);
                      }
                      else {
                        uVar34 = 0;
                        iVar40 = iVar43;
                        do {
                          iVar23 = iVar40 * 4;
                          uVar57 = (undefined1)iVar23;
                          uVar58 = (undefined1)((uint)iVar23 >> 8);
                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);
                          piVar45 = piVar49 + iVar40;
                          bVar14 = (byte)uVar34 & 0x1f;
                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;
                          if ((uVar34 & 0x20) != 0) {
                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);
                          }
                          iVar43 = iVar40;
                          if ((uVar35 & 1) != 0) {
                            *piVar45 = (i16)uVar34;
                            iVar23 = iVar23 + 4;
                            uVar57 = (undefined1)iVar23;
                            uVar58 = (undefined1)((uint)iVar23 >> 8);
                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);
                            pIVar50->azColl[iVar40] = local_84;
                            piVar49 = pIVar50->aiColumn;
                            iVar43 = iVar40 + 1;
                            piVar45 = piVar49 + iVar40 + 1;
                          }
                          uVar34 = uVar34 + 1;
                          iVar40 = iVar43;
                        } while (uVar27 != uVar34);
                      }
                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)
                         ) {
                        iVar40 = 0x3f;
                        while( true ) {
                          piVar49[iVar43] = (i16)iVar40;
                          iVar40 = iVar40 + 1;
                          pIVar50->azColl[iVar43] = local_84;
                          iVar43 = iVar43 + 1;
                          if (pTVar8->nCol <= iVar40) break;
                          piVar49 = pIVar50->aiColumn;
                        }
                        iVar40 = iVar43 * 4;
                        uVar57 = (undefined1)iVar40;
                        uVar58 = (undefined1)((uint)iVar40 >> 8);
                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);
                        piVar45 = pIVar50->aiColumn + iVar43;
                      }
                      *piVar45 = -1;
                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =
                           local_84;
                      p1 = (Vdbe *)pPVar22->nTab;
                      pPVar22->nTab = (int)((int)&p1->db + 1);
                      local_b8->pNext = p1;
                      pParse_00 = pPVar22;
                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);
                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);
                      bVar42 = (byte)local_b8->pc;
                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;
                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {
                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);
                        local_b4 = (Parse *)0x0;
                      }
                      else {
                        iVar40 = pSVar51->a[bVar42].regReturn;
                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);
                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);
                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);
                      }
                      iVar23 = 0;
                      if (local_74 != (Expr *)0x0) {
                        iVar23 = pParse_00->nLabel + -1;
                        pParse_00->nLabel = iVar23;
                        dequote = (Index *)0x10;
                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);
                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;
                      }
                      if (pParse_00->nTempReg == '\0') {
                        iVar25 = pParse_00->nMem + 1;
                        uVar57 = (undefined1)iVar25;
                        uVar58 = (undefined1)((uint)iVar25 >> 8);
                        sVar60 = (short)((uint)iVar25 >> 0x10);
                        pParse_00->nMem = iVar25;
                      }
                      else {
                        bVar14 = pParse_00->nTempReg - 1;
                        pParse_00->nTempReg = bVar14;
                        iVar25 = pParse_00->aTempReg[bVar14];
                        uVar57 = (undefined1)iVar25;
                        uVar58 = (undefined1)((uint)iVar25 >> 8);
                        sVar60 = (short)((uint)iVar25 >> 0x10);
                      }
                      iVar25 = sqlite3GenerateIndexKey
                                         (pParse_00,pIVar50,(int)local_b8->pPrev,
                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,
                                          (Index *)0x0,0);
                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,
                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);
                      if (0 < p_00->nOp) {
                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;
                      }
                      if (local_74 != (Expr *)0x0) {
                        dequote = (Index *)0xa0a80;
                        sqlite3VdbeResolveLabel(p_00,iVar23);
                      }
                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {
                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);
                      }
                      else {
                        if ((int)local_b4 < 0) {
                          local_b4 = (Parse *)(p_00->nOp + -1);
                        }
                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);
                        if (p_00->db->mallocFailed == '\0') {
                          pOVar26 = p_00->aOp + (int)local_b4;
                        }
                        pOVar26->p2 = iVar25 + iVar43;
                        translateColumnToCopy
                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,
                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),
                                   in_stack_ffffff28);
                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);
                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;
                        *puVar36 = *puVar36 & 0xef;
                      }
                      iVar43 = p_00->nOp;
                      if (0 < iVar43) {
                        p_00->aOp[iVar43 + -1].p5 = 3;
                        iVar43 = p_00->nOp;
                      }
                      if (iVar40 < 0) {
                        iVar40 = iVar43 + -1;
                      }
                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);
                      if (p_00->db->mallocFailed == '\0') {
                        pOVar26 = p_00->aOp + iVar40;
                      }
                      pOVar26->p2 = iVar43;
                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));
                      if (iVar43 != 0) {
                        sqlite3ReleaseTempReg(pParse_00,iVar43);
                      }
                      iVar43 = p_00->nOp + -1;
                      if (-1 < iVar17) {
                        iVar43 = iVar17;
                      }
                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);
                      if (p_00->db->mallocFailed == '\0') {
                        pOVar26 = p_00->aOp + iVar43;
                      }
                      pOVar26->p2 = p_00->nOp;
                    }
LAB_000a0ba5:
                    if (local_74 != (Expr *)0x0) {
                      sqlite3ExprDeleteNN(pParse_00->db,local_74);
                    }
                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;
                  }
                  pPVar22 = pParse_00->pToplevel;
                  if (pParse_00->pToplevel == (Parse *)0x0) {
                    pPVar22 = pParse_00;
                  }
                  if (pPVar22->explain == '\x02') {
                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);
                  }
                  local_b8->cacheCtr = p->nOp;
                  pPVar22 = (Parse *)((int)&local_88->db + 1);
                  BVar54 = sqlite3WhereCodeOneLoopStart
                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,
                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),
                                      CONCAT44(pParse_00,in_stack_ffffff28));
                  local_d0->iContinue = local_b8->nMem;
                  dequote = local_cc._4_4_;
                  local_cc = BVar54;
                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;
                  local_88 = pPVar22;
                } while (local_a0 != pPVar22);
                goto LAB_000a0bf2;
              }
            }
          }
        }
        else {
LAB_000a0070:
          pWVar47 = sWLB.pNew;
          pWVar13 = sWLB.pWInfo;
          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;
          pSVar48 = pSVar51->a;
          db_00 = (sWLB.pWInfo)->pParse->db;
          (sWLB.pNew)->wsFlags = 0;
          sWLB.iPlanLimit = 20000;
          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;
          (sWLB.pNew)->nLTerm = 0;
          (sWLB.pNew)->nLSlot = 3;
          if (pSVar48 < pSVar3) {
            uVar12 = '\0';
            do {
              pWVar47->iTab = uVar12;
              uVar16 = (pWVar13->sMaskSet).n;
              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;
              if ((int)uVar16 < 1) {
                uVar16 = 0;
                uVar18 = 0;
              }
              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {
                uVar16 = 1;
                uVar18 = 0;
              }
              else {
                uVar18 = 0;
                do {
                  uVar34 = uVar18 + 1;
                  if (uVar34 == uVar16) {
                    uVar16 = 0;
                    uVar18 = 0;
                    goto LAB_000a014b;
                  }
                  iVar17 = uVar18 + 1;
                  uVar18 = uVar34;
                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);
                bVar42 = (byte)uVar34 & 0x1f;
                uVar27 = 1 << ((byte)uVar34 & 0x1f);
                uVar16 = uVar27;
                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;
                if ((uVar34 & 0x20) != 0) {
                  uVar16 = 0;
                  uVar18 = uVar27;
                }
              }
LAB_000a014b:
              *(uint *)&pWVar47->maskSelf = uVar16;
              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;
              uVar5 = (pSVar48->fg).jointype;
              if (pSVar48->pTab->nModuleArg == 0) {
                dequote = (Index *)0xa019d;
                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,
                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))
                ;
                uVar58 = 0;
                uVar57 = 0;
                uVar59 = 0;
                in_stack_ffffff28 = (Parse *)0x0;
              }
              else {
                puVar36 = (undefined1 *)(pSVar48 + 1);
                uVar58 = 0;
                uVar57 = 0;
                uVar59 = 0;
                in_stack_ffffff28 = (Parse *)0x0;
                while (puVar36 < pSVar3) {
LAB_000a0d2c:
                  puVar37 = puVar36;
                  puVar36 = puVar36 + 0x44;
                  if (in_stack_ffffff28 == (Parse *)0x0 &&
                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {
                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {
                      puVar37 = puVar36;
                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;
                    }
                  }
                  uVar16 = (pWVar13->sMaskSet).n;
                  if ((int)uVar16 < 1) {
LAB_000a0d70:
                    if (pSVar3 <= puVar36) break;
                    goto LAB_000a0d2c;
                  }
                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {
                    uVar18 = 0;
                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {
                      iVar17 = uVar18 + 1;
                      uVar18 = uVar34;
                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {
                        uVar16 = uVar34 >> 5 & 1;
                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);
                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);
                        goto LAB_000a0dc9;
                      }
                    }
                    goto LAB_000a0d70;
                  }
                  uVar16 = 1;
                  uVar18 = 0;
LAB_000a0dc9:
                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;
                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);
                  uVar58 = (undefined1)uVar16;
                  uVar57 = (undefined1)(uVar16 >> 8);
                  uVar59 = (undefined2)(uVar16 >> 0x10);
                }
LAB_000a0d7c:
                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)
                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),
                                             CONCAT44(pToken,in_stack_ffffff28),
                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote
                                                                                     ))));
              }
              if ((iVar17 == 0) &&
                 (((sWLB.pWC)->hasOr == '\0' ||
                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,
                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),
                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {
                if (db_00->mallocFailed != '\0') break;
              }
              else {
                if (iVar17 != 0x65) {
                  whereLoopClear(db_00,pWVar47);
                  goto LAB_000a0bd0;
                }
                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));
              }
              uVar12 = uVar12 + '\x01';
              pSVar48 = pSVar48 + 1;
              uVar33 = uVar5;
            } while (pSVar48 < pSVar3);
          }
          whereLoopClear(db_00,pWVar47);
          dequote = (Index *)0xa01fb;
          wherePathSolver(local_d0,0);
          if (db->mallocFailed == '\0') {
            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;
            dequote = (Index *)0xa022b;
            wherePathSolver(local_d0,local_d0->nRowOut + 1);
            if (db->mallocFailed == '\0') goto LAB_000a0239;
          }
        }
      }
LAB_000a0bd0:
      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;
      whereInfoFree(db,local_d0);
    }
    else if (local_d0 != (WhereInfo *)0x0) {
      sqlite3DbFreeNN(db,local_d0);
      local_d0 = (WhereInfo *)0x0;
      goto LAB_000a0bf2;
    }
  }
  local_d0 = (WhereInfo *)0x0;
LAB_000a0bf2:
  if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return local_d0;
LAB_000a14dd:
  iVar43 = (int)pIVar50->aiColumn[uVar16];
  if (iVar43 < 0) {
    if (iVar43 != -1) goto LAB_000a14f9;
  }
  else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {
LAB_000a14f9:
    uVar18 = (uint)pIVar50->nKeyCol;
    goto LAB_000a13d9;
  }
LAB_000a1320:
  uVar18 = (uint)pIVar50->nKeyCol;
  uVar16 = uVar16 + 1;
  if ((int)uVar18 <= (int)uVar16) goto LAB_000a13d9;
  goto LAB_000a132f;
LAB_000a13d9:
  if (uVar16 == uVar18) goto LAB_000a13e1;
LAB_000a12f0:
  pIVar50 = pIVar50->pNext;
  if (pIVar50 == (Index *)0x0) goto LAB_000a1530;
  goto LAB_000a12fb;
}



int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)

{
  byte *pbVar1;
  short sVar2;
  int iVar3;
  int iVar4;
  code *pcVar5;
  ushort uVar6;
  char cVar7;
  byte bVar8;
  undefined2 uVar9;
  int *piVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  int iVar16;
  int *piVar17;
  uint uVar18;
  undefined4 *puVar19;
  undefined *puVar20;
  char *pcVar21;
  undefined4 *puVar22;
  int *piVar23;
  undefined1 uVar24;
  int extraout_ECX;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  int iVar28;
  ushort uVar29;
  int *piVar30;
  uint uVar31;
  int *piVar32;
  uint uVar33;
  int *piVar34;
  int *piVar35;
  undefined2 *puVar36;
  int iVar37;
  int unaff_EDI;
  int iVar38;
  int in_GS_OFFSET;
  bool bVar39;
  undefined8 uVar40;
  ulonglong uVar41;
  ulonglong uVar42;
  uint uVar43;
  uint local_d8;
  int *local_d0;
  uint local_cc;
  uint local_c8;
  int local_c0;
  uint local_bc;
  int *local_b8;
  int *local_b4;
  uint local_a8;
  int local_a0;
  int local_88;
  undefined *local_84;
  uint local_78;
  int local_74;
  undefined2 local_70;
  int *local_58 [3];
  int local_4c;
  int local_40;
  int local_3c [5];
  char local_28;
  int local_24;
  int local_20;
  
  uVar40 = FUN_0001af1a();
  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);
  piVar10 = (int *)uVar40;
  local_b4 = param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = piVar10[2];
  iVar4 = *piVar10;
  uVar11 = 0;
  do {
    *(undefined4 *)((int)local_58 + uVar11) = 0;
    uVar11 = uVar11 + 4;
  } while (uVar11 < 0x1c);
  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {
    local_b4 = param_1;
  }
  local_58[2] = local_b4;
  uVar29 = param_3 & 0xfeff;
  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {
    uVar29 = param_3;
  }
  local_a0 = *piVar30;
  if (0x40 < local_a0) {
    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);
    local_d0 = (int *)0x0;
    goto LAB_000a0bf2;
  }
  uVar6 = uVar29 & 0x20;
  if ((uVar29 & 0x20) == 0) {
    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;
  }
  else {
    uVar11 = 0x330;
    local_a0 = 1;
  }
  if (*(char *)(iVar4 + 0x4d) == '\0') {
    local_d0 = (int *)FUN_000283a0();
    if (*(char *)(iVar4 + 0x4d) == '\0') {
      *(undefined8 *)local_d0 = uVar40;
      local_d0[2] = (int)local_b4;
      local_d0[3] = (int)param_2;
      local_d0[4] = extraout_ECX;
      local_d0[7] = -1;
      local_d0[6] = -1;
      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;
      iVar12 = piVar10[0xe] + -1;
      piVar10[0xe] = iVar12;
      local_d0[8] = iVar12;
      local_d0[9] = iVar12;
      *(ushort *)(local_d0 + 0xb) = uVar29;
      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;
      local_d0[10] = piVar10[0x20];
      *(undefined4 *)((int)local_d0 + 0x2f) = 0;
      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;
      local_d0[0x12] = 0;
      uVar13 = 0;
      do {
        *(undefined4 *)(uVar25 + uVar13) = 0;
        uVar13 = uVar13 + 4;
      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));
      local_b8 = local_d0 + 0xbb;
      iVar12 = uVar11 + (int)local_d0;
      memset(local_b8,0,(local_a0 + 1) * 0x44);
      local_58[1] = local_d0 + 0x13;
      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;
      *(undefined2 *)(iVar12 + 0x28) = 0;
      *(undefined2 *)(iVar12 + 0x2c) = 3;
      *(undefined4 *)(iVar12 + 0x24) = 0;
      local_d0[0x18] = (int)(local_d0 + 0x19);
      local_d0[0x7a] = 0;
      local_d0[0x13] = (int)local_d0;
      *(undefined1 *)((int)local_d0 + 0x55) = 0;
      local_d0[0x14] = 0;
      local_d0[0x16] = 0;
      local_d0[0x17] = 8;
      local_58[0] = local_d0;
      local_4c = iVar12;
      FUN_0003ab70();
      if (local_a0 == 0) {
        if (local_b4 != (int *)0x0) {
          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;
        }
        if ((uVar29 & 0x100) != 0) {
          *(undefined1 *)((int)local_d0 + 0x33) = 1;
        }
        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);
      }
      else {
        local_bc = 0;
        piVar17 = piVar30 + 6;
        do {
          iVar12 = piVar17[6];
          iVar38 = local_d0[0x7a];
          local_d0[0x7a] = iVar38 + 1;
          local_d0[iVar38 + 0x7b] = iVar12;
          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&
              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {
            puVar22 = (undefined4 *)*piVar17;
            iVar12 = 0;
            iVar38 = 0;
            do {
              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {
LAB_000a0e38:
                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);
                break;
              }
              iVar16 = iVar12;
              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {
                iVar16 = iVar16 + 1;
                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;
              }
              iVar14 = FUN_00028ce0(0);
              if (iVar14 == 0) break;
              iVar12 = iVar16 + 1;
              *(int *)(iVar14 + 0x1c) = piVar17[6];
              *(int *)(iVar14 + 0x20) = iVar16;
              *(undefined4 **)(iVar14 + 0x30) = puVar22;
              if (piVar34[iVar38 * 5 + 1] != 0) {
                FUN_0003dcd0(0);
              }
              iVar38 = iVar38 + 1;
              uVar15 = FUN_00059ec0(0);
              FUN_00059ec0(uVar15);
              FUN_0003a8b0();
            } while (iVar38 < *piVar34);
          }
          local_bc = local_bc + 1;
          piVar17 = piVar17 + 0x11;
        } while ((int)local_bc < *piVar30);
      }
      iVar12 = local_d0[0x16];
      iVar38 = iVar12 + -1;
      if (-1 < iVar38) {
        do {
          iVar38 = iVar38 + -1;
          FUN_0009a5f0(iVar12);
        } while (iVar38 != -1);
      }
      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));
      if (*(char *)(iVar4 + 0x4d) == '\0') {
        if (0 < local_58[1][3]) {
          iVar12 = 0;
          piVar17 = local_58[1];
          do {
            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);
            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)
               ) {
              iVar38 = *piVar34;
              if (local_a0 != 0) {
                uVar11 = 0;
                do {
                  *(undefined4 *)((int)local_3c + uVar11) = 0;
                  uVar11 = uVar11 + 4;
                } while (uVar11 < 0x1c);
                local_28 = '\x01';
                local_3c[1] = unaff_EDI + -0x6e6f7;
                local_3c[2] = unaff_EDI + -0x82347;
                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))
                goto LAB_000a0030;
                iVar38 = *piVar34;
              }
              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);
              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;
              piVar17 = local_58[1];
            }
LAB_000a0030:
            iVar12 = iVar12 + 1;
          } while (iVar12 < piVar17[3]);
        }
        if ((uVar29 & 0x100) != 0) {
          if (*piVar30 == 1) {
            iVar12 = piVar30[0xc];
            if (0 < *param_2) {
              piVar17 = param_2 + 1;
              iVar38 = 0;
LAB_000a1290:
              pcVar21 = (char *)*piVar17;
              do {
                if (pcVar21 == (char *)0x0) {
LAB_000144c2:
                    /* WARNING: Does not return */
                  pcVar5 = (code *)invalidInstructionException();
                  (*pcVar5)();
                }
                uVar11 = *(uint *)(pcVar21 + 4);
                while( true ) {
                  if ((uVar11 & 0x1000) == 0) {
                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&
                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;
                    iVar38 = iVar38 + 1;
                    piVar17 = piVar17 + 5;
                    if (iVar38 == *param_2) goto LAB_000a12dd;
                    goto LAB_000a1290;
                  }
                  if ((uVar11 & 0x40000) == 0) break;
                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);
                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;
                  uVar11 = *(uint *)(pcVar21 + 4);
                }
                pcVar21 = *(char **)(pcVar21 + 0xc);
              } while( true );
            }
LAB_000a12dd:
            iVar38 = *(int *)(piVar30[6] + 8);
            if (iVar38 != 0) {
LAB_000a12fb:
              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;
              if (*(short *)(iVar38 + 0x32) != 0) {
                uVar11 = 0;
LAB_000a132f:
                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);
                if (iVar16 == 0) {
                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);
                  if (0 < *param_2) {
                    iVar16 = 0;
                    do {
                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];
                      if (pcVar21 == (char *)0x0) {
FUN_000144b9:
                    /* WARNING: Does not return */
                        pcVar5 = (code *)invalidInstructionException();
                        (*pcVar5)();
                      }
                      uVar13 = *(uint *)(pcVar21 + 4);
                      while ((uVar13 & 0x1000) != 0) {
                        if ((uVar13 & 0x40000) == 0) {
                          pcVar21 = *(char **)(pcVar21 + 0xc);
                        }
                        else {
                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);
                        }
                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;
                        uVar13 = *(uint *)(pcVar21 + 4);
                      }
                      if (((*pcVar21 == -0x62) &&
                          (*(int *)(pcVar21 + 0x20) ==
                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&
                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {
                        puVar22 = (undefined4 *)FUN_0005da30();
                        if (puVar22 == (undefined4 *)0x0) {
                          puVar22 = *(undefined4 **)(*piVar10 + 8);
                        }
                        bVar8 = *(byte *)*puVar22;
                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==
                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {
                          if (bVar8 == 0) goto LAB_000a14dd;
                          iVar14 = 1;
                          while (bVar8 = ((byte *)*puVar22)[iVar14],
                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==
                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {
                            iVar14 = iVar14 + 1;
                            if (bVar8 == 0) goto LAB_000a14dd;
                          }
                        }
                      }
                      iVar16 = iVar16 + 1;
                      if (*param_2 <= iVar16) {
                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
                        goto LAB_000a13d9;
                      }
                    } while( true );
                  }
                  goto LAB_000a14f9;
                }
                goto LAB_000a1320;
              }
LAB_000a13e1:
              *(undefined1 *)((int)local_d0 + 0x33) = 1;
              goto LAB_000a0050;
            }
          }
LAB_000a1530:
          if (local_b4 == (int *)0x0) {
            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;
            local_d0[2] = (int)param_2;
          }
        }
LAB_000a0050:
        iVar38 = local_4c;
        piVar17 = local_58[0];
        uVar9 = (undefined2)((uint)uVar15 >> 0x10);
        iVar12 = local_58[0][1];
        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&
           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&
            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {
          iVar14 = *(int *)(iVar12 + 0x30);
          *(undefined2 *)(local_4c + 0x2a) = 0;
          *(undefined4 *)(local_4c + 0x24) = 0;
          iVar28 = FUN_000624e0(0,0,0x82,0);
          uVar9 = (undefined2)((uint)uVar15 >> 0x10);
          if (iVar28 == 0) {
            iVar16 = *(int *)(iVar16 + 8);
            if (iVar16 == 0) {
              iVar12 = *(int *)(iVar38 + 0x24);
            }
            else {
              do {
                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&
                   (*(ushort *)(iVar16 + 0x32) < 4)) {
                  bVar8 = *(byte *)(iVar16 + 0x37);
                  if (*(ushort *)(iVar16 + 0x32) == 0) {
                    uVar11 = 0;
                  }
                  else {
                    uVar13 = 0;
                    do {
                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,
                                            iVar16);
                      if (iVar28 == 0) {
                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);
                        break;
                      }
                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;
                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);
                      uVar13 = uVar13 + 1;
                    } while ((int)uVar13 < (int)uVar11);
                    if (uVar13 != uVar11) goto LAB_000a1960;
                  }
                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;
                  uVar9 = (undefined2)uVar11;
                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&
                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||
                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {
                    *(undefined2 *)(iVar38 + 0x28) = uVar9;
                    *(undefined2 *)(iVar38 + 0x18) = uVar9;
                    *(int *)(iVar38 + 0x20) = iVar16;
                    *(undefined2 *)(iVar38 + 0x14) = 0x27;
                  }
                  else {
                    *(int *)(iVar38 + 0x20) = iVar16;
                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;
                    *(undefined2 *)(iVar38 + 0x28) = uVar9;
                    *(undefined2 *)(iVar38 + 0x18) = uVar9;
                    *(undefined2 *)(iVar38 + 0x14) = 0x27;
                  }
                  goto LAB_000a1a26;
                }
LAB_000a1960:
                uVar9 = (undefined2)((uint)uVar15 >> 0x10);
                iVar16 = *(int *)(iVar16 + 0x14);
              } while (iVar16 != 0);
              iVar12 = *(int *)(iVar38 + 0x24);
            }
          }
          else {
            *(undefined4 *)(iVar38 + 0x24) = 0x1101;
            **(int **)(iVar38 + 0x30) = iVar28;
            *(undefined2 *)(iVar38 + 0x28) = 1;
            *(undefined2 *)(iVar38 + 0x18) = 1;
            *(undefined2 *)(iVar38 + 0x14) = 0x21;
            iVar12 = *(int *)(iVar38 + 0x24);
          }
          if (iVar12 == 0) {
            iVar12 = local_58[0][1];
            goto LAB_000a0070;
          }
LAB_000a1a26:
          *(undefined2 *)(iVar38 + 0x16) = 1;
          piVar17[0xc9] = iVar38;
          *(undefined4 *)(iVar38 + 8) = 1;
          *(undefined4 *)(iVar38 + 0xc) = 0;
          *(undefined2 *)(piVar17 + 0x12) = 1;
          piVar17[0xbc] = iVar14;
          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {
            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];
          }
          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {
            *(undefined1 *)((int)piVar17 + 0x33) = 1;
          }
LAB_000a0239:
          if (local_d0[2] == 0) {
LAB_000a0ea8:
            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {
              local_d0[0x10] = -1;
              local_d0[0x11] = -1;
            }
          }
          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {
            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {
              local_cc = 0xffffffff;
              local_c8 = 0xffffffff;
            }
            else {
              local_cc = 0xffffffff;
              local_c8 = 0xffffffff;
              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {
                uVar41 = FUN_0003db30();
                if (local_58[2] != (int *)0x0) {
                  uVar42 = FUN_0003db30();
                  uVar41 = uVar42 | uVar41;
                }
                local_b4 = (int *)(uVar41 >> 0x20);
                local_bc = (uint)uVar41;
                local_cc = 0xffffffff;
                local_c8 = 0xffffffff;
                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;
                if (0 < iVar12) {
                  do {
                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];
                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)
                         != 0) &&
                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {
                      uVar11 = *(uint *)(iVar38 + 8);
                      uVar13 = *(uint *)(iVar38 + 0xc);
                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {
                        piVar17 = (int *)local_58[1][5];
                        piVar34 = piVar17 + local_58[1][3] * 0xc;
                        if (piVar17 < piVar34) {
                          piVar23 = piVar17;
                          do {
                            uVar25 = uVar11;
                            uVar43 = uVar13;
                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&
                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||
                                ((int)*(short *)(*piVar23 + 0x26) !=
                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30
                                         ))))) {
                              if (piVar23 < piVar34) goto LAB_000a17a8;
                              break;
                            }
                            piVar23 = piVar23 + 0xc;
                          } while (piVar23 < piVar34);
                          while( true ) {
                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {
                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;
                            }
                            piVar17 = piVar17 + 0xc;
                            if (piVar34 <= piVar17) break;
                            uVar25 = *(uint *)(iVar38 + 8);
                            uVar43 = *(uint *)(iVar38 + 0xc);
                          }
                        }
                        local_c8 = ~uVar13 & local_c8;
                        local_cc = ~uVar11 & local_cc;
                        bVar8 = *(byte *)((int)local_d0 + 0x2e);
                        if (bVar8 - 1 != iVar12) {
                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,
                                  ((bVar8 - 1) - iVar12) * 0x44);
                          bVar8 = *(byte *)((int)local_d0 + 0x2e);
                        }
                        local_a0 = local_a0 + -1;
                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;
                      }
                    }
LAB_000a17a8:
                    iVar12 = iVar12 + -1;
                  } while (iVar12 != 0);
                }
              }
            }
            uVar40 = CONCAT44(local_c8,local_cc);
            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];
            bVar8 = 0;
            if ((uVar29 & 4) != 0) {
              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);
              if ((uVar11 & 0x1000) == 0) {
                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||
                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;
                uVar24 = 2;
              }
              else {
                uVar24 = 1;
              }
              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;
              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {
                bVar8 = 0;
                if ((uVar29 & 8) != 0) {
                  bVar8 = 8;
                }
                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;
              }
            }
LAB_000a02e0:
            if (local_a0 < 1) {
              local_d0[0xe] = *(int *)(iVar3 + 0x68);
              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;
            }
            else {
              piVar17 = local_b8;
              do {
                uVar11 = (uint)*(byte *)(piVar17 + 9);
                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];
                if (puVar22[0x12] == 0) {
                  iVar12 = -1000000;
                }
                else {
                  iVar12 = FUN_000304d0();
                }
                iVar38 = piVar17[0xe];
                uVar13 = *(uint *)(iVar38 + 0x24);
                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {
                  if ((uVar13 & 0x400) == 0) {
                    if (puVar22[0xe] == 0) {
                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {
                        uVar15 = 0x6d;
                        if (*(char *)((int)local_d0 + 0x31) != '\0') {
                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];
                          uVar15 = 0x6e;
                        }
                        FUN_0005c7e0(puVar22,uVar15);
                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&
                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&
                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {
                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];
                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];
                          if (uVar25 != 0 || uVar13 != 0) {
                            do {
                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;
                              uVar25 = uVar25 >> 1;
                            } while (uVar25 != 0 || uVar13 != 0);
                          }
                          FUN_000370b0(0xfffffffd);
                        }
                        if (0 < *(int *)(iVar3 + 0x68)) {
                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)
                               = (ushort)bVar8;
                        }
                        uVar13 = *(uint *)(iVar38 + 0x24);
                      }
                      else {
                        FUN_00049420(0,*puVar22);
                        uVar13 = *(uint *)(iVar38 + 0x24);
                      }
                    }
                  }
                  else {
                    for (piVar34 = (int *)puVar22[0x10];
                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])
                    {
                    }
                    FUN_000497a0(0,0);
                    FUN_000370b0(0xfffffff4);
                    uVar13 = *(uint *)(iVar38 + 0x24);
                  }
                }
                if ((uVar13 & 0x200) != 0) {
                  iVar16 = *(int *)(iVar38 + 0x20);
                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||
                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {
                    if (*(char *)((int)local_d0 + 0x31) == '\0') {
                      if ((uVar6 == 0) || (param_4 == 0)) {
                        iVar14 = piVar10[10];
                        piVar10[10] = iVar14 + 1;
                        piVar17[2] = iVar14;
                      }
                      else {
                        piVar17[2] = param_4;
                      }
                    }
                    else {
                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);
                      iVar28 = param_4;
                      if ((iVar16 != iVar14) && (iVar14 != 0)) {
                        do {
                          iVar14 = *(int *)(iVar14 + 0x14);
                          iVar28 = iVar28 + 1;
                          if (iVar14 == 0) break;
                        } while (iVar16 != iVar14);
                      }
                      local_d0[7] = iVar28;
                      piVar17[2] = iVar28;
                    }
                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);
                    FUN_0005c7b0();
                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&
                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&
                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&
                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))
                       ) {
                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)
                           = 2;
                    }
                  }
                  else {
                    piVar17[2] = piVar17[1];
                  }
                }
                if (-1 < iVar12) {
                  FUN_000893e0();
                }
                piVar17 = piVar17 + 0x11;
              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);
              local_d0[0xe] = *(int *)(iVar3 + 0x68);
              if (*(char *)(iVar4 + 0x4d) == '\0') {
                local_88 = 0;
                do {
                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {
                    uVar11 = (uint)*(byte *)(local_b8 + 9);
                    piVar17 = (int *)piVar10[2];
                    iVar12 = FUN_000497a0(0,0);
                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];
                    piVar34 = (int *)local_d0[0x18];
                    piVar23 = (int *)local_b8[0xe];
                    piVar32 = piVar34 + local_d0[0x16] * 0xc;
                    local_c0 = 0;
                    if (piVar34 < piVar32) {
                      bVar39 = false;
                      uVar25 = 0;
                      local_a8 = 0;
                      local_74 = 0;
                      do {
                        while( true ) {
                          if (((piVar23[1] == 0 && *piVar23 == 0) &&
                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&
                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {
                            local_28 = '\x03';
                            local_3c[1] = unaff_EDI + -0x70cb7;
                            local_24 = piVar30[uVar11 * 0x11 + 0xc];
                            local_3c[2] = unaff_EDI + -0x82347;
                            FUN_0002e610(*piVar34);
                            if (local_28 != '\0') {
                              FUN_0003dcd0(0);
                              local_74 = FUN_0003a550();
                            }
                          }
                          iVar38 = FUN_00030fa0(uVar40);
                          if (iVar38 != 0) break;
LAB_000a05b6:
                          piVar34 = piVar34 + 0xc;
                          if (piVar32 <= piVar34) goto LAB_000a0663;
                        }
                        uVar13 = piVar34[7];
                        local_d8 = 0x80000000;
                        uVar43 = 0;
                        if ((int)uVar13 < 0x40) {
                          bVar8 = (byte)uVar13 & 0x1f;
                          uVar31 = 1 << ((byte)uVar13 & 0x1f);
                          uVar43 = uVar31;
                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;
                          if ((uVar13 & 0x20) != 0) {
                            uVar43 = 0;
                            local_d8 = uVar31;
                          }
                        }
                        if (!bVar39) {
                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,
                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));
                        }
                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {
                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||
                             (iVar38 = FUN_00031110(), iVar38 == 0)) {
                            bVar39 = true;
                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;
                            local_a8 = local_a8 | local_d8;
                            uVar25 = uVar25 | uVar43;
                            local_c0 = local_c0 + 1;
                            goto LAB_000a05b6;
                          }
                          goto LAB_000a0ba5;
                        }
                        bVar39 = true;
                        piVar34 = piVar34 + 0xc;
                      } while (piVar34 < piVar32);
LAB_000a0663:
                      uVar25 = ~uVar25;
                      uVar13 = ~local_a8 | 0x80000000;
                    }
                    else {
                      uVar25 = 0xffffffff;
                      uVar13 = 0xffffffff;
                      local_c0._0_2_ = 0;
                      local_74 = 0;
                    }
                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;
                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;
                    piVar23[9] = 0x4241;
                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];
                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];
                    sVar2 = *(short *)((int)puVar22 + 0x2a);
                    uVar31 = 0x3f;
                    if (sVar2 < 0x40) {
                      uVar31 = (int)sVar2;
                    }
                    if (0 < sVar2) {
                      uVar26 = 0;
                      do {
                        bVar8 = (byte)uVar26 & 0x1f;
                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;
                        if ((uVar26 & 0x20) != 0) {
                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);
                        }
                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);
                        uVar26 = uVar26 + 1;
                      } while (uVar31 != uVar26);
                    }
                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {
                      local_c0 = local_c0 + -0x3f + (int)sVar2;
                    }
                    piVar34 = (int *)FUN_00028510(local_3c);
                    if (piVar34 != (int *)0x0) {
                      iVar38 = 0;
                      uVar26 = 0;
                      piVar23[8] = (int)piVar34;
                      *piVar34 = unaff_EDI + 0x59c58;
                      piVar34[3] = (int)puVar22;
                      piVar35 = (int *)local_d0[0x18];
                      if (piVar35 < piVar32) {
                        local_78 = 0;
                        do {
                          while( true ) {
                            iVar16 = iVar38 * 2;
                            iVar14 = FUN_00030fa0(uVar40);
                            if (iVar14 != 0) break;
LAB_000a07a0:
                            piVar35 = piVar35 + 0xc;
                            if (piVar32 <= piVar35) goto LAB_000a0858;
                          }
                          uVar27 = piVar35[7];
                          uVar18 = 0;
                          uVar33 = 0x80000000;
                          if ((int)uVar27 < 0x40) {
                            bVar39 = (uVar27 & 0x20) == 0;
                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);
                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);
                          }
                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;
                          uVar26 = uVar26 | uVar18;
                          local_70 = (undefined2)uVar27;
                          local_78 = local_78 | uVar33;
                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;
                          puVar19 = (undefined4 *)FUN_0005dbf0();
                          puVar20 = &UNK_00064bb9 + unaff_EDI;
                          if (puVar19 != (undefined4 *)0x0) {
                            puVar20 = (undefined *)*puVar19;
                          }
                          iVar16 = iVar16 + 2;
                          piVar35 = piVar35 + 0xc;
                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;
                          iVar38 = iVar38 + 1;
                        } while (piVar35 < piVar32);
LAB_000a0858:
                        uVar26 = iVar38 * 4;
                      }
                      else {
                        iVar16 = 0;
                      }
                      local_84 = &UNK_00064bb9 + unaff_EDI;
                      iVar14 = piVar34[1];
                      if (sVar2 < 1) {
                        puVar36 = (undefined2 *)(iVar14 + iVar16);
                      }
                      else {
                        uVar27 = 0;
                        do {
                          uVar26 = iVar38 * 4;
                          iVar16 = iVar38 * 2;
                          puVar36 = (undefined2 *)(iVar14 + iVar16);
                          bVar8 = (byte)uVar27 & 0x1f;
                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;
                          if ((uVar27 & 0x20) != 0) {
                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);
                          }
                          if ((uVar18 & 1) != 0) {
                            *puVar36 = (short)uVar27;
                            uVar26 = uVar26 + 4;
                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;
                            iVar14 = piVar34[1];
                            iVar38 = iVar38 + 1;
                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);
                          }
                          uVar27 = uVar27 + 1;
                        } while (uVar31 != uVar27);
                      }
                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&
                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {
                        iVar16 = 0x3f;
                        while( true ) {
                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;
                          iVar16 = iVar16 + 1;
                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;
                          iVar38 = iVar38 + 1;
                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;
                          iVar14 = piVar34[1];
                        }
                        uVar26 = iVar38 * 4;
                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);
                      }
                      *puVar36 = 0xffff;
                      *(undefined **)(piVar34[8] + uVar26) = local_84;
                      iVar16 = piVar10[10];
                      piVar10[10] = iVar16 + 1;
                      local_b8[2] = iVar16;
                      FUN_000497a0(local_c0 + 1,0);
                      FUN_0005c7b0();
                      uVar11 = (uint)*(byte *)(local_b8 + 9);
                      iVar16 = *(int *)(local_d0[0x13] + 4);
                      iVar14 = uVar11 * 0x44 + iVar16;
                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {
                        iVar14 = FUN_000497a0(0,0);
                        local_b4 = (int *)0x0;
                      }
                      else {
                        local_b4 = (int *)FUN_000497a0(0,0);
                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));
                        iVar14 = FUN_000497a0(0,0);
                      }
                      if (local_74 != 0) {
                        iVar28 = piVar10[0xe];
                        iVar37 = iVar28 + -1;
                        piVar10[0xe] = iVar37;
                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);
                        piVar23[9] = piVar23[9] | 0x20000;
                      }
                      if (*(char *)((int)piVar10 + 0x13) == '\0') {
                        iVar28 = piVar10[0xb] + 1;
                        piVar10[0xb] = iVar28;
                      }
                      else {
                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;
                        *(byte *)((int)piVar10 + 0x13) = bVar8;
                        iVar28 = piVar10[bVar8 + 0x24];
                      }
                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);
                      FUN_000497a0(iVar28,0);
                      if (0 < piVar17[0x1a]) {
                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;
                      }
                      if (local_74 != 0) {
                        FUN_00049570();
                      }
                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {
                        FUN_000497a0(iVar14 + 1,0);
                      }
                      else {
                        if ((int)local_b4 < 0) {
                          local_b4 = (int *)(piVar17[0x1a] + -1);
                        }
                        puVar20 = &UNK_000ac9e5 + unaff_EDI;
                        if (*(char *)(*piVar17 + 0x4d) == '\0') {
                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);
                        }
                        *(int *)(puVar20 + 8) = iVar37 + iVar38;
                        iVar16 = uVar11 * 0x44 + iVar16;
                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);
                        FUN_000497a0(iVar14,0);
                        pbVar1 = (byte *)(iVar16 + 0x2d);
                        *pbVar1 = *pbVar1 & 0xef;
                      }
                      iVar38 = piVar17[0x1a];
                      if (0 < iVar38) {
                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;
                        iVar38 = piVar17[0x1a];
                      }
                      if (iVar14 < 0) {
                        iVar14 = iVar38 + -1;
                      }
                      puVar20 = &UNK_000ac9e5 + unaff_EDI;
                      if (*(char *)(*piVar17 + 0x4d) == '\0') {
                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);
                      }
                      *(int *)(puVar20 + 8) = iVar38;
                      if (iVar28 != 0) {
                        FUN_0002f640();
                      }
                      iVar38 = piVar17[0x1a] + -1;
                      if (-1 < iVar12) {
                        iVar38 = iVar12;
                      }
                      puVar20 = &UNK_000ac9e5 + unaff_EDI;
                      if (*(char *)(*piVar17 + 0x4d) == '\0') {
                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);
                      }
                      *(int *)(puVar20 + 8) = piVar17[0x1a];
                    }
LAB_000a0ba5:
                    if (local_74 != 0) {
                      FUN_00039fe0();
                    }
                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;
                  }
                  piVar17 = (int *)piVar10[0x1d];
                  if ((int *)piVar10[0x1d] == (int *)0x0) {
                    piVar17 = piVar10;
                  }
                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {
                    FUN_00067300(uVar29);
                  }
                  local_b8[8] = *(int *)(iVar3 + 0x68);
                  iVar12 = local_88 + 1;
                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);
                  local_d0[8] = local_b8[6];
                  local_b8 = local_b8 + 0x11;
                  local_88 = iVar12;
                } while (local_a0 != iVar12);
                goto LAB_000a0bf2;
              }
            }
          }
        }
        else {
LAB_000a0070:
          iVar38 = local_4c;
          piVar17 = local_58[0];
          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;
          uVar13 = iVar12 + 8;
          iVar12 = *(int *)*local_58[0];
          *(undefined4 *)(local_4c + 0x24) = 0;
          local_40 = 20000;
          *(int *)(local_4c + 0x30) = local_4c + 0x38;
          *(undefined2 *)(local_4c + 0x28) = 0;
          *(undefined2 *)(local_4c + 0x2c) = 3;
          if (uVar13 < uVar11) {
            cVar7 = '\0';
            do {
              *(char *)(iVar38 + 0x10) = cVar7;
              local_40 = local_40 + 1000;
              if (piVar17[0x7a] < 1) {
                uVar25 = 0;
                uVar43 = 0;
              }
              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {
                uVar25 = 1;
                uVar43 = 0;
              }
              else {
                uVar25 = 0;
                do {
                  uVar31 = uVar25 + 1;
                  if (uVar31 == piVar17[0x7a]) {
                    uVar25 = 0;
                    uVar43 = 0;
                    goto LAB_000a014b;
                  }
                  iVar16 = uVar25 + 0x7c;
                  uVar25 = uVar31;
                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);
                bVar8 = (byte)uVar31 & 0x1f;
                uVar26 = 1 << ((byte)uVar31 & 0x1f);
                uVar25 = uVar26;
                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;
                if ((uVar31 & 0x20) != 0) {
                  uVar25 = 0;
                  uVar43 = uVar26;
                }
              }
LAB_000a014b:
              *(uint *)(iVar38 + 8) = uVar25;
              *(uint *)(iVar38 + 0xc) = uVar43;
              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {
                iVar16 = FUN_00064890();
                uVar43 = 0;
                local_d8 = 0;
              }
              else {
                uVar25 = uVar13 + 0x44;
                uVar43 = 0;
                local_d8 = 0;
                while (uVar25 < uVar11) {
LAB_000a0d2c:
                  uVar31 = uVar25;
                  uVar25 = uVar25 + 0x44;
                  if (local_d8 == 0 && uVar43 == 0) {
                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {
                      uVar31 = uVar25;
                      if (uVar11 <= uVar25) goto LAB_000a0d7c;
                    }
                  }
                  if (piVar17[0x7a] < 1) {
LAB_000a0d70:
                    if (uVar11 <= uVar25) break;
                    goto LAB_000a0d2c;
                  }
                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {
                    uVar26 = 0;
                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {
                      iVar16 = uVar26 + 0x7c;
                      uVar26 = uVar27;
                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {
                        uVar31 = uVar27 >> 5 & 1;
                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);
                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);
                        goto LAB_000a0dc9;
                      }
                    }
                    goto LAB_000a0d70;
                  }
                  uVar31 = 1;
                  uVar26 = 0;
LAB_000a0dc9:
                  uVar43 = uVar43 | uVar31;
                  local_d8 = local_d8 | uVar26;
                }
LAB_000a0d7c:
                iVar16 = FUN_0005b240(uVar43,local_d8);
              }
              if ((iVar16 == 0) &&
                 ((*(char *)((int)local_58[1] + 9) == '\0' ||
                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {
                uVar9 = (undefined2)(uVar43 >> 0x10);
                if (*(char *)(iVar12 + 0x4d) != '\0') break;
              }
              else {
                uVar9 = (undefined2)(uVar43 >> 0x10);
                if (iVar16 != 0x65) {
                  FUN_000310d0();
                  goto LAB_000a0bd0;
                }
                FUN_00052380(0x1c,unaff_EDI + 0x66219);
              }
              cVar7 = cVar7 + '\x01';
              uVar13 = uVar13 + 0x44;
            } while (uVar13 < uVar11);
          }
          FUN_000310d0();
          FUN_00063ca0();
          if (*(char *)(iVar4 + 0x4d) == '\0') {
            if (local_d0[2] == 0) goto LAB_000a0ea8;
            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));
            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;
          }
        }
      }
LAB_000a0bd0:
      piVar10[0x20] = local_d0[10];
      FUN_0003a3b0();
    }
    else if (local_d0 != (int *)0x0) {
      FUN_00026590();
      local_d0 = (int *)0x0;
      goto LAB_000a0bf2;
    }
  }
  local_d0 = (int *)0x0;
LAB_000a0bf2:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_d0;
LAB_000a14dd:
  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);
  if (iVar16 < 0) {
    if (iVar16 != -1) goto LAB_000a14f9;
  }
  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {
LAB_000a14f9:
    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
    goto LAB_000a13d9;
  }
LAB_000a1320:
  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
  uVar11 = uVar11 + 1;
  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;
  goto LAB_000a132f;
LAB_000a13d9:
  if (uVar11 == uVar13) goto LAB_000a13e1;
LAB_000a12f0:
  iVar38 = *(int *)(iVar38 + 0x14);
  if (iVar38 == 0) goto LAB_000a1530;
  goto LAB_000a12fb;
}


MOVZX EAX,byte ptr [0x00000000]
UD2
PUSH EBP
PUSH EDI
CALL 0x0001af1a
ADD EDI,0xab35d
PUSH ESI
PUSH EBX
SUB ESP,0xcc
MOV ESI,dword ptr [ESP + 0xe0]
MOV dword ptr [ESP + 0x18],EDX
LEA EBX,[ESP + 0x84]
MOV EDX,dword ptr [ESP + 0xe8]
MOV dword ptr [ESP + 0x30],EDI
MOV EDI,ECX
XOR ECX,ECX
MOV dword ptr [ESP + 0x28],ESI
MOV ESI,dword ptr [ESP + 0xe4]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0x64],ESI
MOV word ptr [ESP + 0x52],DX
MOV ESI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0xbc],ESI
XOR ESI,ESI
MOV ESI,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x54],EBX
MOV dword ptr [ESP + 0x60],ESI
MOV dword ptr [ESP + 0x38],EAX
XOR EAX,EAX
MOV dword ptr [EBX + EAX*0x1],ECX
ADD EAX,0x4
CMP EAX,0x1c
JC 0x0009fbe1
MOV ESI,dword ptr [ESP + 0x28]
TEST ESI,ESI
JZ 0x0009fc03
CMP dword ptr [ESI],0x40
MOV EAX,0x0
CMOVL EAX,ESI
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ESP + 0x28]
AND DH,0xfe
MOV dword ptr [ESP + 0x8c],EAX
MOV EAX,dword ptr [ESP + 0x38]
TEST byte ptr [EAX + 0x48],0x10
MOV EAX,dword ptr [ESP + 0x18]
CMOVZ DX,word ptr [ESP + 0x52]
MOV EAX,dword ptr [EAX]
MOV word ptr [ESP + 0x52],DX
MOV dword ptr [ESP + 0x3c],EAX
CMP EAX,0x40
JG 0x000a1590
MOVZX EAX,word ptr [ESP + 0x52]
AND AX,0x20
MOV word ptr [ESP + 0x68],AX
JNZ 0x000a0e58
MOV EAX,dword ptr [ESP + 0x3c]
XOR ECX,ECX
LEA ESI,[EAX + -0x1]
IMUL ESI,ESI,0x44
ADD ESI,0x337
AND ESI,0xfffffff8
LEA EDX,[ESI + 0x44]
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0bea
MOV EBX,dword ptr [ESP + 0x38]
MOV EAX,EBX
CALL 0x000283a0
CMP byte ptr [EBX + 0x4d],0x0
MOV dword ptr [ESP + 0xc],EAX
JNZ 0x000a1148
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [EAX + 0x4],EBX
MOV EBX,dword ptr [ESP + 0x28]
MOV dword ptr [EAX],ECX
MOV dword ptr [EAX + 0x8],EBX
MOV EBX,EAX
MOV dword ptr [EAX + 0xc],EDX
LEA EDX,[EBX + 0x2f]
MOV dword ptr [EAX + 0x10],EDI
MOV dword ptr [EAX + 0x1c],0xffffffff
MOV dword ptr [EAX + 0x18],0xffffffff
MOVZX EAX,byte ptr [ESP + 0x3c]
MOV byte ptr [EBX + 0x2e],AL
MOV EAX,dword ptr [ECX + 0x38]
MOV dword ptr [ESP],EAX
SUB EAX,0x1
MOV dword ptr [ECX + 0x38],EAX
MOV dword ptr [EBX + 0x20],EAX
MOV dword ptr [EBX + 0x24],EAX
MOVZX EAX,word ptr [ESP + 0x52]
MOV word ptr [EBX + 0x2c],AX
MOVZX EAX,word ptr [ESP + 0xec]
MOV word ptr [EBX + 0x14],AX
MOV EAX,dword ptr [ECX + 0x80]
MOV dword ptr [EBX + 0x28],EAX
MOV EAX,EBX
XOR EBX,EBX
LEA ECX,[EAX + 0x33]
MOV dword ptr [EAX + 0x2f],0x0
AND ECX,0xfffffffc
MOV dword ptr [EAX + 0x48],0x0
XOR EAX,EAX
SUB EDX,ECX
ADD EDX,0x1d
AND EDX,0xfffffffc
MOV dword ptr [ECX + EAX*0x1],EBX
ADD EAX,0x4
CMP EAX,EDX
JC 0x0009fd19
MOV EAX,dword ptr [ESP + 0x3c]
MOV EBP,dword ptr [ESP + 0xc]
SUB ESP,0x4
ADD EAX,0x1
LEA ECX,[EBP + 0x2ec]
ADD ESI,EBP
IMUL EAX,EAX,0x44
MOV dword ptr [ESP + 0x7c],ECX
MOV dword ptr [ESP + 0x78],ECX
PUSH EAX
PUSH 0x0
PUSH ECX
MOV EBX,dword ptr [ESP + 0x40]
CALL 0x00014280
LEA EAX,[ESI + 0x38]
LEA EBX,[EBP + 0x4c]
MOV ECX,0x2c
MOV dword ptr [ESI + 0x30],EAX
XOR EAX,EAX
MOV EDX,EDI
MOV word ptr [ESI + 0x28],AX
MOV EAX,0x3
MOV word ptr [ESI + 0x2c],AX
LEA EAX,[EBP + 0x64]
MOV dword ptr [ESI + 0x24],0x0
MOV dword ptr [EBP + 0x60],EAX
MOV EAX,EBX
MOV dword ptr [EBP + 0x1e8],0x0
MOV dword ptr [EBP + 0x4c],EBP
MOV byte ptr [EBP + 0x55],0x0
MOV dword ptr [EBP + 0x50],0x0
MOV dword ptr [EBP + 0x58],0x0
MOV dword ptr [EBP + 0x5c],0x8
MOV dword ptr [ESP + 0x94],EBP
MOV dword ptr [ESP + 0x34],EBX
MOV dword ptr [ESP + 0x98],EBX
MOV dword ptr [ESP + 0xa0],ESI
CALL 0x0003ab70
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
JZ 0x000a0c48
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x20],0x0
LEA EBX,[EAX + 0x18]
MOV EAX,dword ptr [ESP + 0x30]
MOV EBP,EBX
LEA EAX,[EAX + 0xfffbaee0]
MOV dword ptr [ESP + 0x34],EAX
LEA ESI,[ESI]
MOV ESI,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EBP + 0x18]
MOV EDI,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESI + 0x1e8]
LEA ECX,[EAX + 0x1]
MOV dword ptr [ESI + 0x1e8],ECX
MOV dword ptr [ESI + EAX*0x4 + 0x1ec],EDX
IMUL EAX,dword ptr [ESP + 0x20],0x44
TEST byte ptr [EDI + EAX*0x1 + 0x2d],0x4
JZ 0x0009ff30
MOV EAX,dword ptr [EBP + 0x2c]
MOV dword ptr [ESP + 0x10],EAX
TEST EAX,EAX
JZ 0x0009ff30
MOV ECX,dword ptr [EAX]
TEST ECX,ECX
JLE 0x0009ff30
MOV EAX,dword ptr [EBP]
XOR EBX,EBX
XOR EDI,EDI
MOV dword ptr [ESP],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP]
MOVSX EDX,word ptr [EAX + 0x2a]
CMP EBX,EDX
JGE 0x000a0e38
MOV EAX,dword ptr [EAX + 0x4]
JMP 0x0009fe73
ADD EBX,0x1
CMP EBX,EDX
JZ 0x000a0e38
MOV ECX,EBX
SHL ECX,0x4
TEST byte ptr [EAX + ECX*0x1 + 0xf],0x2
JZ 0x0009fe68
MOV dword ptr [ESP + 0x1c],EBX
SUB ESP,0xc
XOR ECX,ECX
MOV EDX,0x9e
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
CALL 0x00028ce0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JZ 0x0009ff30
MOV EAX,dword ptr [EBP + 0x18]
MOV ECX,dword ptr [ESP + 0x10]
ADD EBX,0x1
MOV dword ptr [ESI + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESI + 0x20],EAX
MOV EAX,dword ptr [ESP]
MOV dword ptr [ESI + 0x30],EAX
LEA EAX,[EDI + EDI*0x4]
MOV EAX,dword ptr [ECX + EAX*0x4 + 0x4]
TEST EAX,EAX
JZ 0x0009fee3
SUB ESP,0xc
MOV EDX,EAX
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
CALL 0x0003dcd0
ADD ESP,0x10
SUB ESP,0xc
MOV ECX,EAX
MOV EDX,0xa2
ADD EDI,0x1
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00059ec0
MOV ECX,ESI
MOV EDX,0x35
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00059ec0
MOV ECX,0x1
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x0003a8b0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
CMP EDI,dword ptr [EAX]
JL 0x0009fe50
LEA ESI,[ESI]
MOV EDI,dword ptr [ESP + 0x18]
ADD dword ptr [ESP + 0x20],0x1
ADD EBP,0x44
MOV EAX,dword ptr [ESP + 0x20]
CMP dword ptr [EDI],EAX
JG 0x0009fdf8
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x58]
MOV EBX,EAX
MOV dword ptr [ESP],EAX
SUB EBX,0x1
JS 0x0009ff7b
MOV ESI,dword ptr [ESP + 0x24]
MOV EDI,dword ptr [ESP + 0x18]
LEA ESI,[ESI]
MOV ECX,EBX
MOV EDX,ESI
MOV EAX,EDI
SUB EBX,0x1
CALL 0x0009a5f0
CMP EBX,-0x1
JNZ 0x0009ff68
MOV EAX,dword ptr [ESP + 0x38]
MOVZX EAX,byte ptr [EAX + 0x4d]
MOV byte ptr [ESP],AL
TEST AL,AL
JNZ 0x000a0bd0
MOV EAX,dword ptr [ESP + 0x88]
XOR ESI,ESI
LEA EBP,[ESP + 0xa0]
XOR EDI,EDI
MOV EDX,dword ptr [EAX + 0xc]
TEST EDX,EDX
JLE 0x000a003c
LEA ESI,[ESI]
NOP
LEA EBX,[ESI + ESI*0x2]
SHL EBX,0x4
ADD EBX,dword ptr [EAX + 0x14]
TEST byte ptr [EBX + 0xa],0x2
JNZ 0x000a0030
MOV EDX,dword ptr [EBX + 0x2c]
OR EDX,dword ptr [EBX + 0x28]
JNZ 0x000a0030
MOV EAX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [EBX]
TEST EAX,EAX
JZ 0x000a0c1a
XOR EAX,EAX
MOV dword ptr [EBP + EAX*0x1],EDI
ADD EAX,0x4
CMP EAX,0x1c
JC 0x0009ffd7
MOV ECX,dword ptr [ESP + 0x30]
MOV byte ptr [ESP + 0xb4],0x1
LEA EAX,[ECX + 0xffee65ac]
MOV dword ptr [ESP + 0xa4],EAX
LEA EAX,[ECX + 0xffed295c]
MOV dword ptr [ESP + 0xa8],EAX
TEST EDX,EDX
JZ 0x000a0c18
MOV EAX,EBP
CALL 0x0002e610
CMP byte ptr [ESP + 0xb4],0x0
MOV EAX,dword ptr [ESP + 0x88]
JNZ 0x000a0c18
LEA ESI,[ESI]
ADD ESI,0x1
CMP dword ptr [EAX + 0xc],ESI
JG 0x0009ffb0
MOVZX EAX,word ptr [ESP + 0x52]
AND AX,0x100
MOV word ptr [ESP + 0x70],AX
JNZ 0x000a1260
MOV EBP,dword ptr [ESP + 0x84]
MOV EAX,dword ptr [ESP + 0x90]
CMP dword ptr [ESP + 0x3c],0x1
MOV EDI,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x6c],EAX
JZ 0x000a11b0
MOVZX EAX,byte ptr [EBP + 0x2e]
MOV EBX,dword ptr [ESP + 0x6c]
IMUL EAX,EAX,0x44
LEA ESI,[EDI + EAX*0x1 + 0x8]
MOV EAX,dword ptr [EBP]
ADD EDI,0x8
MOV dword ptr [ESP + 0x44],ESI
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBX + 0x24],0x0
MOV dword ptr [ESP + 0x9c],0x4e20
MOV dword ptr [ESP + 0x5c],EAX
LEA EAX,[EBX + 0x38]
MOV dword ptr [EBX + 0x30],EAX
XOR EAX,EAX
MOV word ptr [EBX + 0x28],AX
MOV EAX,0x3
MOV word ptr [EBX + 0x2c],AX
CMP ESI,EDI
JBE 0x000a01e1
MOV dword ptr [ESP + 0x10],0x0
MOV ESI,EDI
MOV EDI,EBX
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x28],0x0
LEA ESI,[ESI]
MOVZX EDX,byte ptr [ESP + 0x28]
MOV byte ptr [EDI + 0x10],DL
MOV ECX,dword ptr [EBP + 0x1e8]
ADD dword ptr [ESP + 0x9c],0x3e8
MOV EBX,dword ptr [ESI + 0x28]
TEST ECX,ECX
JLE 0x000a0e88
CMP EBX,dword ptr [EBP + 0x1ec]
JZ 0x000a0e98
XOR EDX,EDX
MOVZX EAX,byte ptr [ESP]
JMP 0x000a013d
CMP EBX,dword ptr [EBP + EDX*0x4 + 0x1ec]
JZ 0x000a0ce0
ADD EDX,0x1
CMP EDX,ECX
JNZ 0x000a0130
MOV byte ptr [ESP],AL
XOR EDX,EDX
XOR EAX,EAX
MOV ECX,EDX
MOV dword ptr [EDI + 0x8],EAX
MOVZX EAX,byte ptr [ESP]
MOV dword ptr [EDI + 0xc],ECX
MOVZX EBX,byte ptr [ESI + 0x24]
OR EAX,EBX
MOV byte ptr [ESP + 0x34],BL
MOV EBX,dword ptr [ESP + 0x10]
AND EAX,0xa
MOV EAX,dword ptr [ESP + 0x1c]
CMOVNZ EAX,dword ptr [ESP + 0x24]
CMOVNZ EBX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x10]
MOV dword ptr [ESP + 0x10],EBX
MOV EAX,dword ptr [EAX + 0x38]
TEST EAX,EAX
JNZ 0x000a0d08
MOV EDX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x54]
CALL 0x00064890
MOV dword ptr [ESP],0x0
MOV dword ptr [ESP + 0x4],0x0
TEST EAX,EAX
JNZ 0x000a0c90
MOV EAX,dword ptr [ESP + 0x88]
CMP byte ptr [EAX + 0x9],0x0
JNZ 0x000a0df8
MOV EBX,dword ptr [EDI + 0x8]
OR dword ptr [ESP + 0x20],EBX
MOV EBX,dword ptr [EDI + 0xc]
OR dword ptr [ESP + 0x24],EBX
MOV EAX,dword ptr [ESP + 0x5c]
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x000a0cbf
MOV EDX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x5c]
CALL 0x000310d0
MOV EDI,dword ptr [ESP + 0xc]
XOR EDX,EDX
MOV EAX,EDI
CALL 0x00063ca0
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0bd0
MOV EBP,dword ptr [EDI + 0x8]
TEST EBP,EBP
JZ 0x000a0ea8
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EDI,word ptr [EAX + 0x48]
LEA EDX,[EDI + 0x1]
MOV word ptr [ESP],DI
MOVSX EDX,DX
CALL 0x00063ca0
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0bd0
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JZ 0x000a0ea8
MOV EAX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EAX + 0x24]
TEST ESI,ESI
JNZ 0x000a0bd0
MOV EDI,dword ptr [ESP + 0x38]
MOVZX EAX,byte ptr [EDI + 0x4d]
MOV byte ptr [ESP + 0x24],AL
TEST AL,AL
JNZ 0x000a0bd0
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x2e],0x1
JBE 0x000a1568
MOV EBX,dword ptr [ESP + 0x64]
TEST EBX,EBX
JZ 0x000a1568
MOV dword ptr [ESP + 0x10],0xffffffff
MOV dword ptr [ESP + 0x14],0xffffffff
TEST byte ptr [EDI + 0x49],0x1
JZ 0x000a1735
MOV EDI,dword ptr [ESP + 0xc]
MOVZX ESI,word ptr [ESP + 0x52]
MOV EAX,dword ptr [EDI]
MOVSX EDX,word ptr [EDI + 0x48]
ADD dword ptr [EAX + 0x80],EDX
TEST ESI,0x4
JZ 0x000a02e0
MOV EDX,dword ptr [EDI + 0x324]
MOV EAX,dword ptr [EDX + 0x24]
TEST AH,0x10
JNZ 0x000a1655
MOV EDI,ESI
TEST ESI,0x8
JNZ 0x000a16e4
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x3c]
TEST EAX,EAX
JLE 0x000a1918
IMUL EAX,EAX,0x44
MOV EDI,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x74]
LEA EAX,[EDI + EAX*0x1 + 0x2ec]
MOV dword ptr [ESP + 0x20],EAX
LEA ESI,[ESI]
MOVZX EAX,byte ptr [EBX + 0x24]
MOV EDI,dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x1c],EAX
IMUL EAX,EAX,0x44
MOV ESI,dword ptr [EDI + EAX*0x1 + 0x18]
MOV EDX,dword ptr [ESI + 0x48]
TEST EDX,EDX
JZ 0x000a1939
MOV EAX,dword ptr [ESP + 0x38]
CALL 0x000304d0
MOV dword ptr [ESP],EAX
MOV EDI,dword ptr [EBX + 0x38]
MOV EAX,dword ptr [EDI + 0x24]
TEST byte ptr [ESI + 0x24],0x2
JNZ 0x000a0349
MOV EDX,dword ptr [ESI + 0xc]
TEST EDX,EDX
JZ 0x000a0fc0
TEST AH,0x2
JZ 0x000a03f0
MOV EBP,dword ptr [EDI + 0x20]
TEST byte ptr [ESI + 0x24],0x20
JZ 0x000a0372
MOVZX EAX,byte ptr [EBP + 0x37]
AND EAX,0x3
CMP AL,0x2
JNZ 0x000a0372
CMP word ptr [ESP + 0x68],0x0
JNZ 0x000a15c0
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x31],0x0
JNZ 0x000a10f8
CMP word ptr [ESP + 0x68],0x0
JZ 0x000a0397
MOV ESI,dword ptr [ESP + 0xec]
TEST ESI,ESI
JNZ 0x000a1510
MOV ESI,dword ptr [ESP + 0x8]
MOV EDX,0x6d
MOV ECX,dword ptr [ESI + 0x28]
LEA EAX,[ECX + 0x1]
MOV dword ptr [ESI + 0x28],EAX
MOV dword ptr [EBX + 0x8],ECX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x8]
PUSH dword ptr [EBP + 0x2c]
MOV ESI,dword ptr [ESP + 0x70]
MOV EAX,ESI
CALL 0x000497a0
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,EBP
CALL 0x0005c7b0
MOV EAX,dword ptr [EDI + 0x24]
ADD ESP,0x10
TEST AL,0xf
JZ 0x000a03f0
TEST EAX,0x8002
JNZ 0x000a03f0
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x2c],0x1
JZ 0x000a16b8
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP]
TEST EAX,EAX
JS 0x000a0402
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x000893e0
ADD EBX,0x44
CMP EBX,dword ptr [ESP + 0x20]
JNZ 0x000a0308
MOV EAX,dword ptr [ESP + 0x60]
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x68]
MOV dword ptr [EDI + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0bd0
MOV EAX,dword ptr [ESP + 0x78]
MOV dword ptr [ESP + 0x54],0x0
MOV dword ptr [ESP + 0x24],EAX
JMP 0x000a04c6
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDI + 0x74]
TEST EAX,EAX
CMOVZ EAX,EDI
CMP byte ptr [EAX + 0xc5],0x2
JNZ 0x000a0472
SUB ESP,0xc
MOVZX EAX,word ptr [ESP + 0x5e]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x00067300
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x60]
MOV EDI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EDX + 0x68]
MOV dword ptr [EDI + 0x20],EAX
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
PUSH EDI
ADD EDI,0x44
MOV ESI,dword ptr [ESP + 0x60]
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
ADD ESI,0x1
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,EBX
CALL 0x0009d860
MOV dword ptr [ESP + 0x64],ESI
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EDI + -0x2c]
MOV dword ptr [ESP + 0x24],EDX
MOV dword ptr [ESP + 0x34],EDI
ADD ESP,0x10
MOV dword ptr [EBX + 0x20],EAX
CMP dword ptr [ESP + 0x3c],ESI
JZ 0x000a0bf2
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + 0x38]
TEST byte ptr [EAX + 0x25],0x40
JZ 0x000a0440
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x18]
SUB ESP,0x8
MOV EDX,0x11
XOR ECX,ECX
MOVZX EAX,byte ptr [EDI + 0x24]
IMUL EBX,EAX,0x44
MOV dword ptr [ESP + 0x7c],EAX
LEA EAX,[ESI + EBX*0x1 + 0x8]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x48],EAX
PUSH 0x0
PUSH 0x0
CALL 0x000497a0
MOV dword ptr [ESP + 0x8c],EAX
LEA EAX,[ESI + EBX*0x1]
MOV ESI,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x6c],ESI
MOV ESI,dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESI + 0x58]
MOV EBP,dword ptr [ESI + 0x60]
MOV ESI,dword ptr [EDI + 0x38]
LEA EDX,[EDX + EDX*0x2]
SHL EDX,0x4
MOV dword ptr [ESP + 0x80],ESI
ADD EDX,EBP
MOV dword ptr [ESP + 0x30],EDX
ADD ESP,0x10
MOV dword ptr [ESP + 0x1c],0x0
CMP EBP,EDX
JNC 0x000a170e
XOR EBX,EBX
XOR EDI,EDI
MOV dword ptr [ESP + 0x44],EAX
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x68],0x0
JMP 0x000a05c3
MOV EAX,dword ptr [ESP + 0x1c]
LEA EBX,[EAX + 0x1]
MOVZX EAX,word ptr [ESI + 0x2c]
CMP EBX,EAX
JLE 0x000a0596
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,EBX
MOV EDX,ESI
MOV EAX,dword ptr [EAX]
CALL 0x00031110
TEST EAX,EAX
JNZ 0x000a0ba5
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESI + 0x30]
MOV dword ptr [ESP + 0x1c],EBX
MOV EBX,0x1
MOV dword ptr [EAX + EDX*0x4],EBP
MOV EDX,dword ptr [ESP + 0x4]
OR dword ptr [ESP + 0x34],EDX
MOV EAX,dword ptr [ESP]
OR EDI,EAX
ADD EBP,0x30
CMP dword ptr [ESP + 0x20],EBP
JBE 0x000a0663
MOV EAX,dword ptr [ESI + 0x4]
OR EAX,dword ptr [ESI]
JNZ 0x000a05e0
TEST byte ptr [EBP + 0xa],0x2
JNZ 0x000a05e0
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP],EAX
TEST byte ptr [EAX + 0x4],0x1
JZ 0x000a0f00
SUB ESP,0x8
MOV EAX,EBP
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00030fa0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a05b6
MOV ECX,dword ptr [EBP + 0x1c]
MOV dword ptr [ESP],0x0
MOV dword ptr [ESP + 0x4],0x80000000
CMP ECX,0x3f
JG 0x000a0630
MOV EAX,0x1
XOR EDX,EDX
SHLD EDX,EAX,CL
SHL EAX,CL
TEST CL,0x20
JZ 0x000a0629
MOV EDX,EAX
XOR EAX,EAX
MOV dword ptr [ESP],EAX
MOV dword ptr [ESP + 0x4],EDX
TEST BL,BL
JZ 0x000a0ed0
MOV EDX,dword ptr [ESP]
MOV ECX,dword ptr [ESP + 0x4]
MOV EAX,EDX
MOV EDX,dword ptr [ESP + 0x34]
AND EAX,EDI
AND EDX,ECX
OR EDX,EAX
JZ 0x000a0570
MOV EBX,0x1
ADD EBP,0x30
CMP dword ptr [ESP + 0x20],EBP
JA 0x000a05c3
MOV EAX,dword ptr [ESP + 0x34]
NOT EDI
MOVZX ECX,word ptr [ESP + 0x1c]
MOV EDX,EDI
NOT EAX
OR EAX,0x80000000
MOV EDI,dword ptr [ESP + 0x70]
MOV word ptr [EDI + 0x28],CX
MOV word ptr [EDI + 0x18],CX
IMUL ECX,dword ptr [ESP + 0x74],0x44
MOV dword ptr [EDI + 0x24],0x4241
MOV EDI,dword ptr [ESP + 0x18]
LEA ECX,[EDI + ECX*0x1 + 0x30]
MOV EBX,dword ptr [ECX + 0x10]
AND EDX,dword ptr [ECX + 0xc]
MOV dword ptr [ESP + 0x48],EDX
AND EAX,EBX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [ESP + 0x5c]
MOVSX EDI,word ptr [EAX + 0x2a]
MOV EAX,0x3f
CMP DI,0x3f
MOV word ptr [ESP + 0x78],DI
CMOVLE EAX,EDI
MOV dword ptr [ESP + 0x44],EAX
TEST DI,DI
JLE 0x000a0707
MOV EDI,dword ptr [ESP + 0x48]
MOV EBP,dword ptr [ESP + 0x4c]
MOV dword ptr [ESP],EBX
XOR ECX,ECX
MOV ESI,dword ptr [ESP + 0x1c]
MOV EBX,EAX
LEA ESI,[ESI]
MOV EDX,EBP
MOV EAX,EDI
SHRD EAX,EDX,CL
SHR EDX,CL
TEST CL,0x20
JZ 0x000a06f0
MOV EAX,EDX
AND EAX,0x1
CMP EAX,0x1
SBB ESI,-0x1
ADD ECX,0x1
CMP EBX,ECX
JNZ 0x000a06e0
MOV dword ptr [ESP + 0x1c],ESI
MOV EBX,dword ptr [ESP]
TEST EBX,EBX
JNS 0x000a071c
MOV EDI,dword ptr [ESP + 0x1c]
MOVSX EAX,word ptr [ESP + 0x78]
LEA EAX,[EDI + EAX*0x1 + -0x3f]
MOV dword ptr [ESP + 0x1c],EAX
MOVZX EAX,word ptr [ESP + 0x1c]
SUB ESP,0xc
XOR ECX,ECX
LEA EDX,[EAX + 0x1]
LEA EAX,[ESP + 0xac]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x18]
MOVSX EDX,DX
MOV EAX,dword ptr [EAX]
CALL 0x00028510
MOV dword ptr [ESP + 0x44],EAX
MOV EDI,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a0ba5
MOV EAX,dword ptr [ESP + 0x70]
MOV ESI,dword ptr [ESP + 0x30]
XOR EBP,EBP
MOV dword ptr [ESP],0x0
MOV dword ptr [EAX + 0x20],EDI
LEA EAX,[ESI + 0xfffae8fb]
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [EDI + 0xc],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [EAX + 0x60]
CMP dword ptr [ESP + 0x20],EBX
JBE 0x000a1640
LEA EAX,[ESI + 0xfffb985c]
MOV dword ptr [ESP + 0x64],0x0
MOV dword ptr [ESP + 0x58],EAX
JMP 0x000a07ad
ADD EBX,0x30
CMP dword ptr [ESP + 0x20],EBX
JBE 0x000a0858
SUB ESP,0x8
MOV EAX,EBX
LEA EDI,[EBP + EBP*0x1]
PUSH dword ptr [ESP + 0x1c]
PUSH dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x38]
CALL 0x00030fa0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a07a0
MOV ESI,dword ptr [EBX + 0x1c]
XOR EAX,EAX
MOV EDX,0x80000000
MOV dword ptr [ESP + 0x6c],ESI
CMP ESI,0x3f
JG 0x000a07f4
MOV ECX,ESI
XOR EAX,EAX
XOR EDX,EDX
TEST CL,0x20
SETZ AL
SETNZ DL
SHL EDX,CL
SHL EAX,CL
MOV ESI,dword ptr [ESP]
MOV ECX,dword ptr [ESP + 0x64]
AND ESI,EAX
AND ECX,EDX
OR ECX,ESI
JNZ 0x000a07a0
OR dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOVZX ECX,word ptr [ESP + 0x6c]
MOV ESI,dword ptr [EBX]
MOV EAX,dword ptr [EAX + 0x4]
OR dword ptr [ESP + 0x64],EDX
MOV word ptr [EAX + EDI*0x1],CX
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESI + 0xc]
MOV ECX,dword ptr [ESI + 0x10]
CALL 0x0005dbf0
MOV EDX,dword ptr [ESP + 0x58]
TEST EAX,EAX
JZ 0x000a0835
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x34]
ADD EDI,0x2
ADD EBX,0x30
MOV EAX,dword ptr [EAX + 0x20]
MOV dword ptr [EAX + EBP*0x4],EDX
ADD EBP,0x1
CMP dword ptr [ESP + 0x20],EBX
JA 0x000a07ad
LEA ESI,[ESI]
LEA EAX,[EBP*0x4 + 0x0]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x34]
CMP word ptr [ESP + 0x78],0x0
MOV ESI,dword ptr [EAX + 0x4]
JLE 0x000a1630
XOR ECX,ECX
LEA ESI,[ESI]
NOP
LEA EAX,[EBP*0x4 + 0x0]
MOV EDX,dword ptr [ESP + 0x4c]
LEA EDI,[EBP + EBP*0x1]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x48]
LEA EBX,[ESI + EDI*0x1]
SHRD EAX,EDX,CL
SHR EDX,CL
TEST CL,0x20
JZ 0x000a08a5
MOV EAX,EDX
AND EAX,0x1
JZ 0x000a08c9
MOV ESI,dword ptr [ESP + 0x34]
MOV word ptr [EBX],CX
MOV EBX,dword ptr [ESP + 0x58]
ADD dword ptr [ESP],0x4
MOV EAX,dword ptr [ESI + 0x20]
MOV dword ptr [EAX + EBP*0x4],EBX
MOV ESI,dword ptr [ESI + 0x4]
ADD EBP,0x1
LEA EBX,[ESI + EDI*0x1 + 0x2]
ADD ECX,0x1
CMP dword ptr [ESP + 0x44],ECX
JNZ 0x000a0880
IMUL EAX,dword ptr [ESP + 0x74],0x44
MOV EDI,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EDI + EAX*0x1 + 0x40]
TEST EDI,EDI
JS 0x000a1098
MOV ESI,dword ptr [ESP + 0x34]
MOV ECX,0xffffffff
MOV EDI,dword ptr [ESP]
SUB ESP,0x8
MOV EDX,dword ptr [ESP + 0x60]
MOV word ptr [EBX],CX
MOV EAX,dword ptr [ESI + 0x20]
MOV EBX,dword ptr [ESP + 0x2c]
MOV dword ptr [EAX + EDI*0x1],EDX
MOV EDI,dword ptr [ESP + 0x10]
MOV EDX,0x70
MOV ECX,dword ptr [EDI + 0x28]
LEA EAX,[ECX + 0x1]
MOV dword ptr [EDI + 0x28],EAX
MOV dword ptr [EBX + 0x8],ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x28]
ADD EAX,0x1
PUSH EAX
MOV EAX,dword ptr [ESP + 0x50]
CALL 0x000497a0
MOV EDX,ESI
MOV EAX,EDI
CALL 0x0005c7b0
MOV EAX,dword ptr [ESP + 0x1c]
MOVZX ESI,byte ptr [EBX + 0x24]
MOV EAX,dword ptr [EAX + 0x4c]
IMUL EBX,ESI,0x44
MOV dword ptr [ESP + 0x30],ESI
MOV EAX,dword ptr [EAX + 0x4]
ADD EBX,EAX
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0x10
TEST byte ptr [EBX + 0x2d],0x10
JZ 0x000a0f88
SUB ESP,0x8
MOV ESI,dword ptr [EBX + 0x24]
XOR ECX,ECX
MOV EDX,0x46
PUSH 0x0
PUSH 0x0
MOV EDI,dword ptr [ESP + 0x50]
MOV EAX,EDI
CALL 0x000497a0
MOV EDX,0xd
MOV dword ptr [ESP + 0x38],EAX
POP ECX
MOV ECX,ESI
POP EAX
PUSH dword ptr [EBX + 0x20]
MOV EAX,EDI
PUSH 0x0
CALL 0x000497a0
POP EAX
POP EDX
PUSH 0x0
PUSH 0x0
MOV EAX,EDI
MOV ECX,ESI
MOV EDX,0xe
CALL 0x000497a0
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x68]
XOR ESI,ESI
TEST EAX,EAX
JZ 0x000a09e3
MOV EBX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [EBX + 0x38]
MOV dword ptr [ESP],ESI
SUB ESI,0x1
MOV dword ptr [EBX + 0x38],ESI
PUSH 0x10
PUSH ESI
PUSH EAX
PUSH EBX
CALL 0x000958f0
MOV EAX,dword ptr [ESP + 0x80]
ADD ESP,0x10
OR dword ptr [EAX + 0x24],0x20000
MOV EAX,dword ptr [ESP + 0x8]
MOVZX EAX,byte ptr [EAX + 0x13]
TEST AL,AL
JZ 0x000a1170
MOV EDX,dword ptr [ESP + 0x8]
SUB EAX,0x1
MOV byte ptr [EDX + 0x13],AL
MOVZX EAX,AL
MOV EAX,dword ptr [EDX + EAX*0x4 + 0x90]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x24]
SUB ESP,0xc
MOV ECX,dword ptr [EAX + 0x4]
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x1c]
MOV EDX,dword ptr [ESP + 0x54]
MOV EAX,dword ptr [ESP + 0x28]
CALL 0x0009c790
ADD ESP,0x18
MOV EDX,0x84
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [EAX + 0x8]
PUSH 0x0
PUSH dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x50]
CALL 0x000497a0
MOV EDX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV EAX,dword ptr [EDX + 0x68]
TEST EAX,EAX
JLE 0x000a0a6d
MOV ECX,dword ptr [EDX + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV EDX,0x10
LEA EAX,[ECX + EAX*0x4]
MOV word ptr [EAX + -0x12],DX
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x000a0a80
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,ESI
CALL 0x00049570
IMUL EAX,dword ptr [ESP + 0x20],0x44
MOV ESI,dword ptr [ESP + 0x1c]
TEST byte ptr [ESI + EAX*0x1 + 0x2d],0x10
JZ 0x000a1188
MOV EAX,dword ptr [ESP + 0x28]
ADD EBX,EBP
TEST EAX,EAX
JNS 0x000a0aac
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x68]
SUB EAX,0x1
MOV dword ptr [ESP + 0x28],EAX
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESI]
LEA EAX,[EAX + 0x1688]
CMP byte ptr [EDX + 0x4d],0x0
JNZ 0x000a0acf
MOV EAX,dword ptr [ESP + 0x28]
LEA EDX,[EAX + EAX*0x4]
MOV EAX,dword ptr [ESI + 0x64]
LEA EAX,[EAX + EDX*0x4]
MOV dword ptr [EAX + 0x8],EBX
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x4
MOV ECX,EDI
MOV EDX,dword ptr [EAX + 0x8]
PUSH 0x1
IMUL EBX,dword ptr [ESP + 0x28],0x44
ADD EBX,dword ptr [ESP + 0x24]
PUSH dword ptr [EBX + 0x28]
MOV ESI,dword ptr [ESP + 0x30]
PUSH dword ptr [ESI + 0x4]
MOV EAX,dword ptr [EAX]
CALL 0x00030ec0
POP ESI
POP EBP
PUSH 0x0
PUSH EDI
MOV EAX,dword ptr [ESP + 0x50]
XOR ECX,ECX
MOV EDX,0xb
CALL 0x000497a0
AND byte ptr [EBX + 0x2d],0xef
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESI + 0x68]
TEST EAX,EAX
JLE 0x000a0b36
MOV EDX,dword ptr [ESI + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV ECX,0x3
LEA EAX,[EDX + EAX*0x4]
MOV word ptr [EAX + -0x12],CX
MOV EAX,dword ptr [ESI + 0x68]
MOV ESI,dword ptr [ESP + 0x40]
LEA EDX,[EAX + -0x1]
TEST EDI,EDI
CMOVS EDI,EDX
MOV EDX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESI]
LEA EDX,[EDX + 0x1688]
CMP byte ptr [ECX + 0x4d],0x0
JNZ 0x000a0b5d
MOV EDX,dword ptr [ESI + 0x64]
LEA ECX,[EDI + EDI*0x4]
LEA EDX,[EDX + ECX*0x4]
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESP]
TEST EAX,EAX
JZ 0x000a0b72
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0002f640
MOV EDI,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x7c]
MOV EAX,dword ptr [EDI + 0x68]
TEST ESI,ESI
MOV ECX,dword ptr [EDI]
LEA EDX,[EAX + -0x1]
CMOVNS EDX,ESI
CMP byte ptr [ECX + 0x4d],0x0
MOV ESI,EDX
MOV EDX,dword ptr [ESP + 0x30]
LEA EDX,[EDX + 0x1688]
JNZ 0x000a0ba2
MOV EDX,dword ptr [EDI + 0x64]
LEA ECX,[ESI + ESI*0x4]
LEA EDX,[EDX + ECX*0x4]
MOV dword ptr [EDX + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x68]
TEST EAX,EAX
JZ 0x000a0bba
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
CALL 0x00039fe0
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JZ 0x000a0440
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EDX + 0x28]
MOV dword ptr [EDI + 0x80],EAX
MOV EAX,dword ptr [ESP + 0x38]
CALL 0x0003a3b0
MOV dword ptr [ESP + 0xc],0x0
MOV EDI,dword ptr [ESP + 0xbc]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0xc]
JNZ 0x000a1b2f
ADD ESP,0xcc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [EBX]
PUSH 0x10
MOV EAX,dword ptr [ESP + 0x10]
PUSH dword ptr [EAX + 0x24]
PUSH EDX
PUSH dword ptr [ESP + 0x14]
CALL 0x000958f0
ADD ESP,0x10
OR word ptr [EBX + 0xa],0x4
MOV EAX,dword ptr [ESP + 0x88]
JMP 0x000a0030
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x000a0c55
MOV EAX,dword ptr [EAX]
MOV byte ptr [EBP + 0x2f],AL
TEST word ptr [ESP + 0x52],0x100
JZ 0x000a0c66
MOV EAX,dword ptr [ESP + 0xc]
MOV byte ptr [EAX + 0x33],0x1
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x34]
LEA EAX,[EAX + 0xfffae8cf]
PUSH EAX
PUSH 0x0
PUSH dword ptr [ESP + 0x14]
CALL 0x00065d00
ADD ESP,0x10
JMP 0x0009ff48
MOV ECX,dword ptr [EDI + 0x8]
OR dword ptr [ESP + 0x20],ECX
MOV ECX,dword ptr [EDI + 0xc]
OR dword ptr [ESP + 0x24],ECX
CMP EAX,0x65
JNZ 0x000a1552
SUB ESP,0x8
MOV EBX,dword ptr [ESP + 0x38]
LEA EAX,[EBX + 0xfffbaebc]
PUSH EAX
PUSH 0x1c
CALL 0x00052380
ADD ESP,0x10
MOVZX EAX,byte ptr [ESP + 0x34]
ADD dword ptr [ESP + 0x28],0x1
ADD ESI,0x44
MOV byte ptr [ESP],AL
CMP dword ptr [ESP + 0x44],ESI
JA 0x000a00f0
JMP 0x000a01e1
MOV ECX,EDX
MOV byte ptr [ESP],AL
XOR EDX,EDX
MOV EAX,0x1
SHLD EDX,EAX,CL
XOR EBX,EBX
SHL EAX,CL
AND ECX,0x20
CMOVNZ EDX,EAX
CMOVNZ EAX,EBX
JMP 0x000a014b
MOV EDX,dword ptr [ESP + 0x44]
LEA EAX,[ESI + 0x44]
MOV dword ptr [ESP],0x0
MOV dword ptr [ESP + 0x4],0x0
CMP EDX,EAX
JBE 0x000a0d7c
MOV dword ptr [ESP + 0x58],EDI
MOV ECX,EAX
MOV EBX,ESI
MOV EAX,EDX
MOV ESI,dword ptr [ESP]
MOV EDI,dword ptr [ESP + 0x4]
LEA EDX,[ECX + 0x44]
OR EDI,ESI
JZ 0x000a0da0
MOV ESI,dword ptr [EBP + 0x1e8]
MOV EDI,dword ptr [ECX + 0x28]
TEST ESI,ESI
JLE 0x000a0d70
CMP EDI,dword ptr [EBP + 0x1ec]
JZ 0x000a0e78
XOR ECX,ECX
JMP 0x000a0d69
CMP EDI,dword ptr [EBP + ECX*0x4 + 0x1ec]
JZ 0x000a0db8
ADD ECX,0x1
CMP ESI,ECX
JNZ 0x000a0d60
MOV ECX,EDX
CMP EAX,EDX
JA 0x000a0d2c
MOV EDI,dword ptr [ESP + 0x58]
MOV ESI,EBX
SUB ESP,0x8
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x0005b240
ADD ESP,0x10
JMP 0x000a01ac
LEA EDX,[ECX + 0x44]
TEST byte ptr [ECX + 0x24],0xa
JNZ 0x000a0d3a
MOV ECX,EDX
CMP EAX,EDX
JA 0x000a0da0
JMP 0x000a0d76
MOV EDI,ECX
SHR EDI,0x5
AND EDI,0x1
MOV ESI,EDI
SHL EDI,CL
XOR ESI,0x1
SHL ESI,CL
MOV ECX,dword ptr [ESP]
OR ECX,ESI
MOV dword ptr [ESP + 0x40],ECX
MOV ECX,dword ptr [ESP + 0x4]
OR ECX,EDI
MOV EDI,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0x4],ECX
MOV ECX,EDX
MOV dword ptr [ESP],EDI
CMP EAX,EDX
JA 0x000a0d2c
JMP 0x000a0d76
SUB ESP,0x8
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x64]
CALL 0x000650b0
MOV EDX,dword ptr [EDI + 0x8]
MOV EBX,dword ptr [EDI + 0xc]
OR dword ptr [ESP + 0x30],EDX
OR dword ptr [ESP + 0x34],EBX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a01d3
JMP 0x000a0c9e
PUSH EDI
MOV EAX,dword ptr [ESP + 0x4]
PUSH dword ptr [EAX]
PUSH dword ptr [ESP + 0x3c]
PUSH dword ptr [ESP + 0x14]
CALL 0x000590d0
ADD ESP,0x10
JMP 0x0009ff30
MOV EDX,0x374
XOR ECX,ECX
MOV ESI,0x330
MOV dword ptr [ESP + 0x3c],0x1
JMP 0x0009fc63
MOV ESI,0x1
XOR EDI,EDI
JMP 0x000a0dc9
XOR EAX,EAX
XOR EDX,EDX
JMP 0x000a014b
MOV EAX,0x1
XOR EDX,EDX
JMP 0x000a014b
MOV EAX,dword ptr [ESP + 0x38]
TEST byte ptr [EAX + 0x1d],0x10
JZ 0x000a0248
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x40],0xffffffff
MOV dword ptr [EAX + 0x44],0xffffffff
JMP 0x000a0248
MOV EAX,dword ptr [ESP + 0x5c]
SHL ECX,0x4
ADD ECX,dword ptr [EAX + 0x4]
PUSH dword ptr [ECX]
PUSH dword ptr [EAX]
MOV EBX,dword ptr [ESP + 0x38]
LEA EAX,[EBX + 0xfffae8e1]
PUSH EAX
PUSH 0x11c
CALL 0x00052380
ADD ESP,0x10
JMP 0x000a0638
MOV ECX,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [ESP + 0x44]
MOV byte ptr [ESP + 0xb4],0x3
LEA EDX,[ECX + 0xffee3fec]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0xa4],EDX
LEA EDX,[ECX + 0xffed295c]
MOV dword ptr [ESP + 0xa8],EDX
MOV EDX,dword ptr [ESP]
MOV dword ptr [ESP + 0xb8],EAX
LEA EAX,[ESP + 0xa0]
CALL 0x0002e610
CMP byte ptr [ESP + 0xb4],0x0
JZ 0x000a05e0
SUB ESP,0xc
XOR ECX,ECX
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
CALL 0x0003dcd0
MOV EDX,dword ptr [ESP + 0x78]
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
CALL 0x0003a550
MOV dword ptr [ESP + 0x78],EAX
ADD ESP,0x10
JMP 0x000a05e0
MOV EAX,dword ptr [ESP + 0x24]
SUB ESP,0x8
MOV EDX,0x24
MOV ECX,dword ptr [EAX + 0x4]
PUSH 0x0
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x50]
CALL 0x000497a0
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [ESP + 0x28],0x0
JMP 0x000a09ae
TEST AH,0x4
JNZ 0x000a15d0
MOV EBP,dword ptr [ESI + 0x38]
TEST EBP,EBP
JNZ 0x000a0349
TEST AL,0x40
JNZ 0x000a1070
CMP word ptr [ESP + 0x68],0x0
JNZ 0x000a1070
IMUL EAX,dword ptr [ESP + 0x1c],0x44
ADD EAX,dword ptr [ESP + 0x18]
MOV ECX,0x6d
MOV dword ptr [ESP + 0x28],EAX
MOV EDX,dword ptr [EAX + 0x30]
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x31],0x0
JZ 0x000a1016
MOV dword ptr [EAX + 0x18],EDX
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,0x6e
MOV EDX,dword ptr [EAX + 0x30]
SUB ESP,0x8
PUSH ECX
PUSH ESI
MOV ECX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0005c7e0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
CMP byte ptr [EAX + 0x31],0x0
JNZ 0x000a1046
CMP word ptr [ESI + 0x2a],0x3f
JG 0x000a1046
TEST byte ptr [ESI + 0x24],0x20
JZ 0x000a1ab6
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x68]
TEST EAX,EAX
JLE 0x000a1067
MOV ECX,dword ptr [ESP + 0x60]
LEA EAX,[EAX + EAX*0x4]
MOVZX EDX,byte ptr [ESP + 0x24]
SHL EAX,0x2
ADD EAX,dword ptr [ECX + 0x64]
MOV word ptr [EAX + -0x12],DX
MOV EAX,dword ptr [EDI + 0x24]
JMP 0x000a0349
SUB ESP,0x8
MOV ECX,dword ptr [ESI + 0x1c]
PUSH dword ptr [ESI]
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [ESP + 0x10]
CALL 0x00049420
MOV EAX,dword ptr [EDI + 0x24]
ADD ESP,0x10
JMP 0x000a0349
MOV EDI,dword ptr [ESP + 0x5c]
CMP word ptr [EDI + 0x2a],0x3f
JLE 0x000a08e7
MOV EBX,EDI
MOV EAX,0x3f
MOV ECX,dword ptr [ESP + 0x34]
MOV EDI,dword ptr [ESP + 0x58]
JMP 0x000a10c3
MOV ESI,dword ptr [ECX + 0x4]
MOV word ptr [ESI + EBP*0x2],AX
MOV EDX,dword ptr [ECX + 0x20]
ADD EAX,0x1
MOV dword ptr [EDX + EBP*0x4],EDI
MOVSX EDX,word ptr [EBX + 0x2a]
ADD EBP,0x1
CMP EAX,EDX
JL 0x000a10c0
LEA EAX,[EBP*0x4 + 0x0]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x4]
LEA EBX,[EAX + EBP*0x2]
JMP 0x000a08e7
IMUL EAX,dword ptr [ESP + 0x1c],0x44
MOV ESI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESP + 0xec]
MOV EAX,dword ptr [ESI + EAX*0x1 + 0x18]
MOV EAX,dword ptr [EAX + 0x8]
CMP EBP,EAX
JZ 0x000a112e
TEST EAX,EAX
JZ 0x000a112e
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [EAX + 0x14]
ADD ECX,0x1
TEST EAX,EAX
JZ 0x000a112e
CMP EBP,EAX
JNZ 0x000a1120
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,0x6e
MOV dword ptr [EAX + 0x1c],ECX
MOV dword ptr [EBX + 0x8],ECX
JMP 0x000a03ac
MOV EDX,dword ptr [ESP + 0xc]
TEST EDX,EDX
JZ 0x000a0bea
MOV EAX,dword ptr [ESP + 0x38]
CALL 0x00026590
MOV dword ptr [ESP + 0xc],0x0
JMP 0x000a0bf2
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [EAX + 0x2c]
LEA EBX,[ECX + 0x1]
MOV dword ptr [ESP],EBX
MOV dword ptr [EAX + 0x2c],EBX
JMP 0x000a0a0a
MOV EAX,dword ptr [ESP + 0x24]
SUB ESP,0x8
MOV EDX,0x5
MOV ECX,dword ptr [EAX + 0x4]
LEA EAX,[EDI + 0x1]
PUSH 0x0
PUSH EAX
MOV EAX,dword ptr [ESP + 0x50]
CALL 0x000497a0
ADD ESP,0x10
JMP 0x000a0b16
TEST byte ptr [EBP + 0x2c],0x20
JNZ 0x000a0070
MOV EBX,dword ptr [EDI + 0x18]
MOV ESI,dword ptr [EBX + 0x38]
TEST ESI,ESI
JNZ 0x000a0070
TEST byte ptr [EDI + 0x2d],0x2
JNZ 0x000a0070
MOV EDX,dword ptr [EDI + 0x30]
MOV ESI,dword ptr [ESP + 0x6c]
LEA EAX,[EBP + 0x4c]
XOR ECX,ECX
MOV dword ptr [ESP + 0x1c],EAX
MOV dword ptr [ESP + 0x10],EDX
MOV word ptr [ESI + 0x2a],CX
MOV ECX,0xffffffff
MOV dword ptr [ESI + 0x24],0x0
PUSH 0x0
PUSH 0x82
PUSH 0x0
PUSH 0x0
CALL 0x000624e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a1945
MOV EDX,dword ptr [ESI + 0x30]
MOV dword ptr [ESI + 0x24],0x1101
MOV dword ptr [EDX],EAX
MOV EAX,0x1
MOV word ptr [ESI + 0x28],AX
MOV EAX,0x1
MOV word ptr [ESI + 0x18],AX
MOV EAX,0x21
MOV word ptr [ESI + 0x14],AX
MOV EAX,dword ptr [ESI + 0x24]
TEST EAX,EAX
JNZ 0x000a1a26
MOV EBP,dword ptr [ESP + 0x84]
MOV EAX,dword ptr [ESP + 0x90]
MOV EDI,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x6c],EAX
JMP 0x000a0070
MOV EAX,dword ptr [ESP + 0x18]
CMP dword ptr [EAX],0x1
JNZ 0x000a1530
MOV EAX,dword ptr [ESP + 0x18]
MOV EBP,dword ptr [EAX + 0x30]
MOV EDI,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x10],EBP
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JLE 0x000a12dd
LEA ECX,[EAX + 0x4]
XOR EBX,EBX
LEA ESI,[ESI]
MOV EAX,dword ptr [ECX]
LEA ESI,[ESI]
TEST EAX,EAX
JZ 0x000144c2
MOV EDX,dword ptr [EAX + 0x4]
TEST DH,0x10
JZ 0x000a12ca
AND EDX,0x40000
JZ 0x000a13b8
MOV EAX,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x000144c2
MOV EDX,dword ptr [EAX + 0x4]
TEST DH,0x10
JNZ 0x000a12a8
CMP byte ptr [EAX],0x9e
JZ 0x000a14b0
ADD EBX,0x1
ADD ECX,0x14
CMP EBX,ESI
JNZ 0x000a1290
MOV EBP,dword ptr [EDI + 0x8]
TEST EBP,EBP
JZ 0x000a1530
MOV EDI,dword ptr [ESP + 0x64]
JMP 0x000a12fb
MOV EBP,dword ptr [EBP + 0x14]
TEST EBP,EBP
JZ 0x000a1530
CMP byte ptr [EBP + 0x36],0x0
JZ 0x000a12f0
CMP word ptr [EBP + 0x32],0x0
JZ 0x000a13e1
XOR ESI,ESI
MOV EAX,EDI
MOV EDI,ESI
MOV ESI,EBP
MOV EBP,EAX
JMP 0x000a132f
MOVZX EAX,word ptr [ESI + 0x32]
ADD EDI,0x1
CMP EDI,EAX
JGE 0x000a1580
PUSH ESI
MOV ECX,EDI
PUSH 0x2
PUSH -0x1
PUSH -0x1
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000624e0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a1320
MOV EAX,dword ptr [ESI + 0x20]
MOV EAX,dword ptr [EAX + EDI*0x4]
MOV dword ptr [ESP + 0x34],EAX
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JLE 0x000a14f9
LEA EAX,[EDI + EDI*0x1]
MOV dword ptr [ESP + 0x20],EDI
XOR EBX,EBX
MOV dword ptr [ESP + 0x1c],EAX
MOV EDI,EAX
LEA EAX,[EBX + EBX*0x4]
MOV EDX,dword ptr [EBP + EAX*0x4 + 0x4]
TEST EDX,EDX
JZ 0x000144b9
MOV ECX,dword ptr [EDX + 0x4]
MOV EAX,EDX
TEST CH,0x10
JNZ 0x000a13a6
JMP 0x000a13c0
MOV EAX,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JZ 0x000144b9
MOV ECX,dword ptr [EAX + 0x4]
TEST CH,0x10
JZ 0x000a13c0
AND ECX,0x40000
JNZ 0x000a1390
MOV EAX,dword ptr [EAX + 0xc]
JMP 0x000a1396
MOV EAX,dword ptr [EAX + 0xc]
JMP 0x000a1298
CMP byte ptr [EAX],0x9e
JZ 0x000a13f0
ADD EBX,0x1
CMP EBX,dword ptr [EBP]
JL 0x000a1370
MOV EDI,EBP
MOV EBP,ESI
MOV ESI,dword ptr [ESP + 0x20]
MOVZX EAX,word ptr [EBP + 0x32]
CMP ESI,EAX
JNZ 0x000a12f0
MOV EAX,dword ptr [ESP + 0xc]
MOV byte ptr [EAX + 0x33],0x1
JMP 0x000a0050
MOV ECX,dword ptr [ESI + 0x4]
MOVSX ECX,word ptr [ECX + EDI*0x1]
CMP dword ptr [EAX + 0x20],ECX
JNZ 0x000a13c5
MOV ECX,dword ptr [ESP + 0x10]
CMP ECX,dword ptr [EAX + 0x1c]
JNZ 0x000a13c5
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0005da30
TEST EAX,EAX
JZ 0x000a1727
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [ESP + 0x30]
MOVZX EDX,byte ptr [EAX]
MOV dword ptr [ESP + 0x44],EAX
LEA ECX,[ECX + 0xfffb9a2c]
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x58],ECX
MOV ECX,dword ptr [ESP + 0x30]
MOV byte ptr [ESP + 0x40],DL
MOVZX EAX,byte ptr [EAX]
MOVZX EAX,byte ptr [ECX + EAX*0x1 + 0xfffb9a2c]
CMP byte ptr [ECX + EDX*0x1 + 0xfffb9a2c],AL
JNZ 0x000a13c5
CMP byte ptr [ESP + 0x40],0x0
JZ 0x000a1a79
MOV dword ptr [ESP + 0x5c],EDI
MOV EAX,0x1
MOV EDI,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x6c],EBP
MOV ECX,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x40],ESI
MOV EBP,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x7c],EBX
JMP 0x000a1487
ADD EAX,0x1
TEST DL,DL
JZ 0x000a14c9
MOVZX ESI,byte ptr [EBP + EAX*0x1]
MOVZX EBX,byte ptr [EDI + EAX*0x1]
MOV EDX,ESI
MOVZX EBX,byte ptr [ECX + EBX*0x1]
CMP byte ptr [ECX + ESI*0x1],BL
JZ 0x000a1480
MOV ESI,dword ptr [ESP + 0x40]
MOV EBX,dword ptr [ESP + 0x7c]
MOV EDI,dword ptr [ESP + 0x5c]
MOV EBP,dword ptr [ESP + 0x6c]
JMP 0x000a13c5
CMP EBP,dword ptr [EAX + 0x1c]
JNZ 0x000a12d3
MOV EAX,dword ptr [EAX + 0x20]
TEST EAX,EAX
JNS 0x000a12d3
JMP 0x000a13e1
MOV EAX,dword ptr [ESP + 0x5c]
MOV EDI,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x40]
MOV EBP,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESI + 0x4]
MOV EBX,dword ptr [ESP + 0x1c]
MOVSX EAX,word ptr [EAX + EBX*0x1]
TEST EAX,EAX
JNS 0x000a16a0
CMP EAX,-0x1
JZ 0x000a1320
MOV EAX,EBP
MOV EBP,ESI
MOV ESI,EDI
MOV EDI,EAX
MOVZX EAX,word ptr [EBP + 0x32]
JMP 0x000a13d9
MOV EAX,dword ptr [ESP + 0xec]
MOV EDX,0x6c
MOV dword ptr [EBX + 0x8],EAX
MOV ECX,EAX
JMP 0x000a03ac
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JNZ 0x000a0050
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x64]
OR word ptr [EAX + 0x2c],0x80
MOV dword ptr [EAX + 0x8],EDI
JMP 0x000a0050
MOV EDX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [ESP + 0x5c]
CALL 0x000310d0
JMP 0x000a0bd0
MOV dword ptr [ESP + 0x10],0xffffffff
MOV dword ptr [ESP + 0x14],0xffffffff
JMP 0x000a029f
MOV EBX,EBP
MOV EBP,ESI
MOV ESI,EDI
MOV EDI,EBX
JMP 0x000a13d9
SUB ESP,0x4
PUSH 0x40
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffae8b3]
PUSH EAX
PUSH dword ptr [ESP + 0x14]
CALL 0x000590d0
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
JMP 0x000a0bf2
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [EBX + 0x8],EAX
JMP 0x000a03f0
MOV EBP,dword ptr [ESI + 0x40]
TEST EBP,EBP
JZ 0x000a15ec
MOV EAX,dword ptr [ESP + 0x38]
JMP 0x000a15e7
MOV EBP,dword ptr [EBP + 0x18]
TEST EBP,EBP
JZ 0x000a15ec
CMP EAX,dword ptr [EBP]
JNZ 0x000a15e0
IMUL EAX,dword ptr [ESP + 0x1c],0x44
SUB ESP,0x8
MOV EDX,0xa3
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ECX + EAX*0x1 + 0x30]
MOV EAX,dword ptr [ESP + 0x70]
CALL 0x000497a0
MOV ECX,EBP
MOV dword ptr [ESP],0xfffffff4
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x70]
CALL 0x000370b0
MOV EAX,dword ptr [EDI + 0x24]
ADD ESP,0x10
JMP 0x000a0349
LEA EBX,[ESI + EDI*0x1]
JMP 0x000a08d2
MOV EAX,dword ptr [ESP + 0x30]
XOR EDI,EDI
LEA EAX,[EAX + 0xfffb985c]
MOV dword ptr [ESP + 0x58],EAX
JMP 0x000a0862
MOV ECX,0x1
MOV EDI,dword ptr [ESP + 0xc]
MOV byte ptr [EDI + 0x31],CL
MOV EDI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EDI + 0x18]
TEST byte ptr [ECX + 0x24],0x20
JNZ 0x000a02e0
TEST AL,0x40
JZ 0x000a02e0
MOVZX EBX,byte ptr [ESP + 0x24]
TEST byte ptr [ESP + 0x52],0x8
MOV ECX,0x8
CMOVNZ EBX,ECX
AND EAX,0xffffffbf
MOV dword ptr [EDX + 0x24],EAX
MOV byte ptr [ESP + 0x24],BL
JMP 0x000a02e0
MOV EDX,dword ptr [ESI + 0xc]
SHL EAX,0x4
ADD EAX,dword ptr [EDX + 0x4]
CMP byte ptr [EAX + 0xc],0x0
JNZ 0x000a1320
JMP 0x000a14f9
CMP byte ptr [EAX + 0x33],0x2
JZ 0x000a03f0
MOV EAX,dword ptr [ESI + 0x68]
TEST EAX,EAX
JLE 0x000a03f0
MOV EDX,dword ptr [ESI + 0x64]
LEA EAX,[EAX + EAX*0x4]
MOV ECX,0x2
LEA EAX,[EDX + EAX*0x4]
MOV word ptr [EAX + -0x12],CX
JMP 0x000a03f0
MOV ESI,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [ESI + 0x18]
MOV ECX,dword ptr [ECX + 0x38]
TEST ECX,ECX
JNZ 0x000a02e0
TEST AH,0x20
JZ 0x000a1704
AND EDI,0x10
JZ 0x000a02e0
MOV ECX,0x2
JMP 0x000a165a
MOV EDX,0xffffffff
MOV EAX,0xffffffff
XOR ECX,ECX
MOV dword ptr [ESP + 0x68],0x0
JMP 0x000a0677
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
JMP 0x000a1416
LEA EBX,[EAX + 0x1e4]
MOV EDX,dword ptr [ESP + 0x64]
MOV EAX,EBX
CALL 0x0003db30
MOV ESI,EDX
MOV dword ptr [ESP + 0x28],EDX
MOV EDX,dword ptr [ESP + 0x8c]
MOV EDI,EAX
MOV dword ptr [ESP + 0x20],EAX
TEST EDX,EDX
JZ 0x000a1770
MOV EAX,EBX
CALL 0x0003db30
OR EDI,EAX
OR ESI,EDX
MOV dword ptr [ESP + 0x20],EDI
MOV dword ptr [ESP + 0x28],ESI
MOV EDI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x10],0xffffffff
MOV dword ptr [ESP + 0x14],0xffffffff
MOVZX EAX,byte ptr [EDI + 0x2e]
SUB EAX,0x1
MOV dword ptr [ESP],EAX
TEST EAX,EAX
JLE 0x000a029f
LEA EAX,[EDI + 0x330]
MOV dword ptr [ESP + 0x54],EAX
JMP 0x000a17b2
SUB dword ptr [ESP],0x1
JZ 0x000a029f
IMUL EAX,dword ptr [ESP],0x44
MOV EDI,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EDI + 0x4]
MOV EBP,dword ptr [EDI + EAX*0x1 + 0x324]
MOV dword ptr [ESP + 0x1c],EAX
MOVZX EBX,byte ptr [EBP + 0x10]
IMUL EAX,EBX,0x44
TEST byte ptr [ESI + EAX*0x1 + 0x2c],0x8
JZ 0x000a17a8
CMP word ptr [ESP + 0x70],0x0
JNZ 0x000a17e4
TEST byte ptr [EBP + 0x25],0x10
JZ 0x000a17a8
MOV ECX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0xc]
MOV EAX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x28]
AND EAX,ECX
AND EDI,EDX
OR EDI,EAX
JNZ 0x000a17a8
MOV EAX,dword ptr [ESP + 0x88]
MOV EDI,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX + 0xc]
LEA EAX,[EAX + EAX*0x2]
SHL EAX,0x4
ADD EAX,EDI
MOV dword ptr [ESP + 0x34],EAX
CMP EDI,EAX
JNC 0x000a1b12
IMUL EBX,EBX,0x44
MOV EAX,EDI
MOV dword ptr [ESP + 0x44],EDI
MOV EDI,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x40],EBP
ADD ESI,EBX
MOV EBP,ESI
MOV EBX,dword ptr [EAX + 0x28]
MOV ESI,dword ptr [EAX + 0x2c]
AND EBX,ECX
AND ESI,EDX
OR ESI,EBX
JZ 0x000a1857
MOV EBX,dword ptr [EAX]
TEST byte ptr [EBX + 0x4],0x1
JZ 0x000a18fa
MOVSX EBX,word ptr [EBX + 0x26]
CMP EBX,dword ptr [EBP + 0x30]
JNZ 0x000a18fa
ADD EAX,0x30
CMP EDI,EAX
JA 0x000a1830
MOV EBP,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [ESP + 0x44]
MOV EBX,ECX
MOV EAX,EDX
NOT EBX
NOT EAX
AND EBX,dword ptr [ESP + 0x10]
AND EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [ESP + 0x10],EBX
JMP 0x000a188e
MOV ECX,dword ptr [EBP + 0x8]
MOV EDX,dword ptr [EBP + 0xc]
AND ECX,dword ptr [EDI + 0x28]
AND EDX,dword ptr [EDI + 0x2c]
OR EDX,ECX
JZ 0x000a189d
OR word ptr [EDI + 0xa],0x4
ADD EDI,0x30
CMP EAX,EDI
JA 0x000a1888
MOV EDI,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ESP]
MOVZX EAX,byte ptr [EDI + 0x2e]
MOV EDX,EAX
SUB EAX,0x1
CMP EAX,ESI
JZ 0x000a18e6
SUB EAX,ESI
SUB ESP,0x4
IMUL EAX,EAX,0x44
PUSH EAX
MOV ESI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x5c]
ADD EAX,ESI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x84]
ADD EAX,ESI
PUSH EAX
MOV EBX,dword ptr [ESP + 0x40]
CALL 0x000140b0
MOVZX EDX,byte ptr [EDI + 0x2e]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
SUB EDX,0x1
SUB dword ptr [ESP + 0x3c],0x1
MOV byte ptr [EAX + 0x2e],DL
JMP 0x000a17a8
MOV EBP,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [ESP + 0x44]
CMP dword ptr [ESP + 0x34],EAX
JA 0x000a17a8
JMP 0x000a1866
MOV EAX,dword ptr [ESP + 0x60]
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x68]
MOV dword ptr [EDI + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x38]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000a0bd0
JMP 0x000a0bf2
MOV dword ptr [ESP],0xfff0bdc0
JMP 0x000a0332
MOV ESI,dword ptr [EBX + 0x8]
TEST ESI,ESI
JZ 0x000a1b43
MOV dword ptr [ESP + 0x20],EBP
MOV EBP,dword ptr [ESP + 0x6c]
MOV dword ptr [ESP + 0x24],EDI
JMP 0x000a196b
MOV ESI,dword ptr [ESI + 0x14]
TEST ESI,ESI
JZ 0x000a1a82
CMP byte ptr [ESI + 0x36],0x0
JZ 0x000a1960
MOV EDI,dword ptr [ESI + 0x24]
TEST EDI,EDI
JNZ 0x000a1960
MOVZX EAX,word ptr [ESI + 0x32]
CMP AX,0x3
JA 0x000a1960
MOVZX EDX,byte ptr [ESI + 0x37]
AND EDX,0x8
CMP DL,0x1
SBB EDI,EDI
AND EDI,0xffffff80
ADD EDI,0x82
TEST AX,AX
JZ 0x000a1b34
XOR EBX,EBX
JMP 0x000a19b9
MOV EDX,dword ptr [EBP + 0x30]
MOV dword ptr [EDX + EBX*0x4],EAX
MOVZX EAX,word ptr [ESI + 0x32]
ADD EBX,0x1
CMP EBX,EAX
JGE 0x000a19d9
PUSH ESI
MOV ECX,EBX
PUSH EDI
PUSH 0x0
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x2c]
CALL 0x000624e0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000a19a8
MOVZX EAX,word ptr [ESI + 0x32]
CMP EBX,EAX
JNZ 0x000a1960
MOV EBP,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
MOV EBX,dword ptr [ESP + 0x6c]
MOV dword ptr [EBX + 0x24],0x1201
TEST byte ptr [ESI + 0x37],0x20
JNZ 0x000a1a92
MOV EDX,dword ptr [EDI + 0x3c]
MOV ECX,dword ptr [EDI + 0x40]
AND EDX,dword ptr [ESI + 0x3c]
AND ECX,dword ptr [ESI + 0x40]
OR ECX,EDX
JZ 0x000a1a92
MOV EDI,dword ptr [ESP + 0x6c]
MOV EBX,0x27
MOV word ptr [EDI + 0x28],AX
MOV word ptr [EDI + 0x18],AX
MOV dword ptr [EDI + 0x20],ESI
MOV word ptr [EDI + 0x14],BX
MOV EAX,dword ptr [ESP + 0x6c]
MOV EDX,0x1
MOV ECX,0x1
MOV word ptr [EAX + 0x16],DX
MOV dword ptr [EBP + 0x324],EAX
MOV dword ptr [EAX + 0x8],0x1
MOV dword ptr [EAX + 0xc],0x0
MOV EAX,dword ptr [ESP + 0x10]
MOV word ptr [EBP + 0x48],CX
MOV dword ptr [EBP + 0x2f0],EAX
MOV EAX,dword ptr [EBP + 0x8]
TEST EAX,EAX
JZ 0x000a1a66
MOV EAX,dword ptr [EAX]
MOV byte ptr [EBP + 0x2f],AL
TEST byte ptr [EBP + 0x2d],0x1
JZ 0x000a0239
MOV byte ptr [EBP + 0x33],0x1
JMP 0x000a0239
MOV EDI,dword ptr [ESP + 0x20]
JMP 0x000a14dd
MOV EAX,dword ptr [ESP + 0x6c]
MOV EBP,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x24]
JMP 0x000a123b
MOV EDI,dword ptr [ESP + 0x6c]
MOV dword ptr [EDI + 0x20],ESI
MOV ESI,0x27
MOV dword ptr [EDI + 0x24],0x1241
MOV word ptr [EDI + 0x28],AX
MOV word ptr [EDI + 0x18],AX
MOV word ptr [EDI + 0x14],SI
JMP 0x000a1a26
IMUL EAX,dword ptr [ESP + 0x1c],0x44
MOV EDX,dword ptr [ESP + 0x18]
LEA EDX,[EDX + EAX*0x1 + 0x3c]
MOV EAX,dword ptr [EDX]
MOV EDX,dword ptr [EDX + 0x4]
MOV ECX,EDX
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [ESP + 0x2c],ECX
OR ECX,EAX
JZ 0x000a1af5
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x28],EBX
SHRD EDX,ECX,0x1
SHR ECX,0x1
ADD EBP,0x1
MOV EBX,ECX
OR EBX,EDX
JNZ 0x000a1ae2
MOV EBX,dword ptr [ESP + 0x28]
SUB ESP,0xc
MOV ECX,EBP
MOV EDX,0xffffffff
PUSH -0x3
MOV EAX,dword ptr [ESP + 0x70]
CALL 0x000370b0
ADD ESP,0x10
JMP 0x000a1046
MOV EDI,dword ptr [ESP + 0x10]
MOV EBP,dword ptr [ESP + 0x14]
NOT ECX
NOT EDX
AND ECX,EDI
AND EDX,EBP
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x14],EDX
JMP 0x000a18a4
CALL 0x000f6410
MOV EBP,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
XOR EAX,EAX
JMP 0x000a19e5
MOV EAX,dword ptr [ESP + 0x6c]
MOV EAX,dword ptr [EAX + 0x24]
JMP 0x000a123b
(translation_unit "int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)\n\n{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}\n\n" (function_definition "int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)\n\n{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" primitive_type (pointer_declarator "* FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" * (function_declarator "FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" identifier (parameter_list "(int *param_1,int *param_2,ushort param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ushort param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) )))) (compound_statement "{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined2 uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "char *pcVar21;" primitive_type (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "undefined1 uVar24;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "ushort uVar29;" type_identifier identifier ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "undefined2 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar39;" primitive_type identifier ;) (declaration "undefined8 uVar40;" type_identifier identifier ;) (declaration "ulonglong uVar41;" type_identifier identifier ;) (declaration "ulonglong uVar42;" type_identifier identifier ;) (declaration "uint uVar43;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "int *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "uint local_cc;" type_identifier identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "int *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "int *local_b4;" primitive_type (pointer_declarator "*local_b4" * identifier) ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "undefined *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "undefined2 local_70;" type_identifier identifier ;) (declaration "int *local_58 [3];" primitive_type (pointer_declarator "*local_58 [3]" * (array_declarator "local_58 [3]" identifier [ number_literal ])) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c [5];" primitive_type (array_declarator "local_3c [5]" identifier [ number_literal ]) ;) (declaration "char local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar40 = FUN_0001af1a();" (assignment_expression "uVar40 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar30 = (int *)((ulonglong)uVar40 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar40 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar40 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar40 >> 0x20)" ( (binary_expression "(ulonglong)uVar40 >> 0x20" (cast_expression "(ulonglong)uVar40" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar10 = (int *)uVar40;" (assignment_expression "piVar10 = (int *)uVar40" identifier = (cast_expression "(int *)uVar40" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = piVar10[2];" (assignment_expression "iVar3 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)local_58 + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_58 + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_58 + uVar11)" * (cast_expression "(undefined4 *)((int)local_58 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58 + uVar11)" ( (binary_expression "(int)local_58 + uVar11" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" identifier = (binary_expression "uVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < 0x1c)" ( (binary_expression "uVar11 < 0x1c" identifier < number_literal) )) ;) (if_statement "if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }" if (parenthesized_expression "((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40))" ( (binary_expression "(param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)" (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_b4 = (int *)0x0, *param_1 < 0x40)" ( (comma_expression "local_b4 = (int *)0x0, *param_1 < 0x40" (assignment_expression "local_b4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "*param_1 < 0x40" (pointer_expression "*param_1" * identifier) < number_literal)) ))) )) (compound_statement "{\n    local_b4 = param_1;\n  }" { (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" identifier = identifier) ;) })) (expression_statement "local_58[2] = local_b4;" (assignment_expression "local_58[2] = local_b4" (subscript_expression "local_58[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar29 = param_3 & 0xfeff;" (assignment_expression "uVar29 = param_3 & 0xfeff" identifier = (binary_expression "param_3 & 0xfeff" identifier & number_literal)) ;) (if_statement "if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x48) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x48) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x48) & 0x10)" ( (binary_expression "*(byte *)(iVar4 + 0x48) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x48)" * (cast_expression "(byte *)(iVar4 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar29 = param_3;\n  }" { (expression_statement "uVar29 = param_3;" (assignment_expression "uVar29 = param_3" identifier = identifier) ;) })) (expression_statement "local_a0 = *piVar30;" (assignment_expression "local_a0 = *piVar30" identifier = (pointer_expression "*piVar30" * identifier)) ;) (if_statement "if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" if (parenthesized_expression "(0x40 < local_a0)" ( (binary_expression "0x40 < local_a0" number_literal < identifier) )) (compound_statement "{\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" { (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40)" identifier (argument_list "(piVar10,unaff_EDI + 0x59c10,0x40)" ( identifier , (binary_expression "unaff_EDI + 0x59c10" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) (expression_statement "uVar6 = uVar29 & 0x20;" (assignment_expression "uVar6 = uVar29 & 0x20" identifier = (binary_expression "uVar29 & 0x20" identifier & number_literal)) ;) (if_statement "if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" if (parenthesized_expression "((uVar29 & 0x20) == 0)" ( (binary_expression "(uVar29 & 0x20) == 0" (parenthesized_expression "(uVar29 & 0x20)" ( (binary_expression "uVar29 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }" { (expression_statement "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;" (assignment_expression "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" identifier = (binary_expression "(local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" (binary_expression "(local_a0 + -1) * 0x44 + 0x337U" (binary_expression "(local_a0 + -1) * 0x44" (parenthesized_expression "(local_a0 + -1)" ( (binary_expression "local_a0 + -1" identifier + number_literal) )) * number_literal) + number_literal) & number_literal)) ;) }) (else_clause "else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" else (compound_statement "{\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" { (expression_statement "uVar11 = 0x330;" (assignment_expression "uVar11 = 0x330" identifier = number_literal) ;) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" identifier = number_literal) ;) }))) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" { (expression_statement "local_d0 = (int *)FUN_000283a0();" (assignment_expression "local_d0 = (int *)FUN_000283a0()" identifier = (cast_expression "(int *)FUN_000283a0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000283a0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }" { (expression_statement "*(undefined8 *)local_d0 = uVar40;" (assignment_expression "*(undefined8 *)local_d0 = uVar40" (pointer_expression "*(undefined8 *)local_d0" * (cast_expression "(undefined8 *)local_d0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "local_d0[2] = (int)local_b4;" (assignment_expression "local_d0[2] = (int)local_b4" (subscript_expression "local_d0[2]" identifier [ number_literal ]) = (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_d0[3] = (int)param_2;" (assignment_expression "local_d0[3] = (int)param_2" (subscript_expression "local_d0[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_d0[4] = extraout_ECX;" (assignment_expression "local_d0[4] = extraout_ECX" (subscript_expression "local_d0[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[7] = -1;" (assignment_expression "local_d0[7] = -1" (subscript_expression "local_d0[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[6] = -1;" (assignment_expression "local_d0[6] = -1" (subscript_expression "local_d0[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x2e)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x2e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1)local_a0" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = piVar10[0xe] + -1;" (assignment_expression "iVar12 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar12;" (assignment_expression "piVar10[0xe] = iVar12" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[8] = iVar12;" (assignment_expression "local_d0[8] = iVar12" (subscript_expression "local_d0[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[9] = iVar12;" (assignment_expression "local_d0[9] = iVar12" (subscript_expression "local_d0[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ushort *)(local_d0 + 0xb) = uVar29;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = uVar29" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4;" (assignment_expression "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4" (pointer_expression "*(undefined2 *)(local_d0 + 5)" * (cast_expression "(undefined2 *)(local_d0 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 5)" ( (binary_expression "local_d0 + 5" identifier + number_literal) )))) = (cast_expression "(undefined2)param_4" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_d0[10] = piVar10[0x20];" (assignment_expression "local_d0[10] = piVar10[0x20]" (subscript_expression "local_d0[10]" identifier [ number_literal ]) = (subscript_expression "piVar10[0x20]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)local_d0 + 0x2f) = 0;" (assignment_expression "*(undefined4 *)((int)local_d0 + 0x2f) = 0" (pointer_expression "*(undefined4 *)((int)local_d0 + 0x2f)" * (cast_expression "(undefined4 *)((int)local_d0 + 0x2f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2f)" ( (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;" (assignment_expression "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc" identifier = (binary_expression "(int)local_d0 + 0x33U & 0xfffffffc" (binary_expression "(int)local_d0 + 0x33U" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "local_d0[0x12] = 0;" (assignment_expression "local_d0[0x12] = 0" (subscript_expression "local_d0[0x12]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));" do (compound_statement "{\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      }" { (expression_statement "*(undefined4 *)(uVar25 + uVar13) = 0;" (assignment_expression "*(undefined4 *)(uVar25 + uVar13) = 0" (pointer_expression "*(undefined4 *)(uVar25 + uVar13)" * (cast_expression "(undefined4 *)(uVar25 + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + uVar13)" ( (binary_expression "uVar25 + uVar13" identifier + identifier) )))) = number_literal) ;) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" identifier = (binary_expression "uVar13 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc))" ( (binary_expression "uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" identifier < (parenthesized_expression "((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" ( (binary_expression "(int)local_d0 + (0x4c - uVar25) & 0xfffffffc" (binary_expression "(int)local_d0 + (0x4c - uVar25)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x4c - uVar25)" ( (binary_expression "0x4c - uVar25" number_literal - identifier) ))) & number_literal) ))) )) ;) (expression_statement "local_b8 = local_d0 + 0xbb;" (assignment_expression "local_b8 = local_d0 + 0xbb" identifier = (binary_expression "local_d0 + 0xbb" identifier + number_literal)) ;) (expression_statement "iVar12 = uVar11 + (int)local_d0;" (assignment_expression "iVar12 = uVar11 + (int)local_d0" identifier = (binary_expression "uVar11 + (int)local_d0" identifier + (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memset(local_b8,0,(local_a0 + 1) * 0x44);" (call_expression "memset(local_b8,0,(local_a0 + 1) * 0x44)" identifier (argument_list "(local_b8,0,(local_a0 + 1) * 0x44)" ( identifier , number_literal , (binary_expression "(local_a0 + 1) * 0x44" (parenthesized_expression "(local_a0 + 1)" ( (binary_expression "local_a0 + 1" identifier + number_literal) )) * number_literal) ))) ;) (expression_statement "local_58[1] = local_d0 + 0x13;" (assignment_expression "local_58[1] = local_d0 + 0x13" (subscript_expression "local_58[1]" identifier [ number_literal ]) = (binary_expression "local_d0 + 0x13" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x30) = iVar12 + 0x38;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar12 + 0x38" (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar12 + 0x38" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x28) = 0;" (assignment_expression "*(undefined2 *)(iVar12 + 0x28) = 0" (pointer_expression "*(undefined2 *)(iVar12 + 0x28)" * (cast_expression "(undefined2 *)(iVar12 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(iVar12 + 0x2c) = 3" (pointer_expression "*(undefined2 *)(iVar12 + 0x2c)" * (cast_expression "(undefined2 *)(iVar12 + 0x2c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x24)" * (cast_expression "(undefined4 *)(iVar12 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_d0[0x18] = (int)(local_d0 + 0x19);" (assignment_expression "local_d0[0x18] = (int)(local_d0 + 0x19)" (subscript_expression "local_d0[0x18]" identifier [ number_literal ]) = (cast_expression "(int)(local_d0 + 0x19)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_d0 + 0x19)" ( (binary_expression "local_d0 + 0x19" identifier + number_literal) )))) ;) (expression_statement "local_d0[0x7a] = 0;" (assignment_expression "local_d0[0x7a] = 0" (subscript_expression "local_d0[0x7a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x13] = (int)local_d0;" (assignment_expression "local_d0[0x13] = (int)local_d0" (subscript_expression "local_d0[0x13]" identifier [ number_literal ]) = (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)local_d0 + 0x55) = 0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x55) = 0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x55)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x55)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x55)" ( (binary_expression "(int)local_d0 + 0x55" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_d0[0x14] = 0;" (assignment_expression "local_d0[0x14] = 0" (subscript_expression "local_d0[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x16] = 0;" (assignment_expression "local_d0[0x16] = 0" (subscript_expression "local_d0[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x17] = 8;" (assignment_expression "local_d0[0x17] = 8" (subscript_expression "local_d0[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58[0] = local_d0;" (assignment_expression "local_58[0] = local_d0" (subscript_expression "local_58[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_4c = iVar12;" (assignment_expression "local_4c = iVar12" identifier = identifier) ;) (expression_statement "FUN_0003ab70();" (call_expression "FUN_0003ab70()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" if (parenthesized_expression "(local_a0 == 0)" ( (binary_expression "local_a0 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }" { (if_statement "if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" { (expression_statement "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4;" (assignment_expression "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4" (pointer_expression "*(char *)((int)local_d0 + 0x2f)" * (cast_expression "(char *)((int)local_d0 + 0x2f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2f)" ( (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*local_b4" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_b4" * identifier))) ;) })) (if_statement "if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" if (parenthesized_expression "((uVar29 & 0x100) != 0)" ( (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" { (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);" (call_expression "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c)" identifier (argument_list "(piVar10,0,unaff_EDI + 0x59c2c)" ( identifier , number_literal , (binary_expression "unaff_EDI + 0x59c2c" identifier + number_literal) ))) ;) }) (else_clause "else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" else (compound_statement "{\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" { (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "piVar17 = piVar30 + 6;" (assignment_expression "piVar17 = piVar30 + 6" identifier = (binary_expression "piVar30 + 6" identifier + number_literal)) ;) (do_statement "do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);" do (compound_statement "{\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        }" { (expression_statement "iVar12 = piVar17[6];" (assignment_expression "iVar12 = piVar17[6]" identifier = (subscript_expression "piVar17[6]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = local_d0[0x7a];" (assignment_expression "iVar38 = local_d0[0x7a]" identifier = (subscript_expression "local_d0[0x7a]" identifier [ number_literal ])) ;) (expression_statement "local_d0[0x7a] = iVar38 + 1;" (assignment_expression "local_d0[0x7a] = iVar38 + 1" (subscript_expression "local_d0[0x7a]" identifier [ number_literal ]) = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "local_d0[iVar38 + 0x7b] = iVar12;" (assignment_expression "local_d0[iVar38 + 0x7b] = iVar12" (subscript_expression "local_d0[iVar38 + 0x7b]" identifier [ (binary_expression "iVar38 + 0x7b" identifier + number_literal) ]) = identifier) ;) (if_statement "if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" if (parenthesized_expression "((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34))" ( (binary_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)" (parenthesized_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0))" ( (binary_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" (parenthesized_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4)" ( (binary_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" * (cast_expression "(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar30 + local_bc * 0x44 + 0x2d)" ( (binary_expression "(int)piVar30 + local_bc * 0x44 + 0x2d" (binary_expression "(int)piVar30 + local_bc * 0x44" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_bc * 0x44" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" ( (comma_expression "piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0" (assignment_expression "piVar34 = (int *)piVar17[0xb]" identifier = (cast_expression "(int *)piVar17[0xb]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[0xb]" identifier [ number_literal ]))) , (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(0 < *piVar34)" ( (binary_expression "0 < *piVar34" number_literal < (pointer_expression "*piVar34" * identifier)) ))) )) (compound_statement "{\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" { (expression_statement "puVar22 = (undefined4 *)*piVar17;" (assignment_expression "puVar22 = (undefined4 *)*piVar17" identifier = (cast_expression "(undefined4 *)*piVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (do_statement "do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);" do (compound_statement "{\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            }" { (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" if (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar12)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar12" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" { (labeled_statement "LAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" statement_identifier : (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" identifier (argument_list "(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" ( identifier , (binary_expression "unaff_EDI + 0x6623d" identifier + number_literal) , (pointer_expression "*puVar22" * identifier) , identifier ))) ;)) (break_statement "break;" break ;) })) (expression_statement "iVar16 = iVar12;" (assignment_expression "iVar16 = iVar12" identifier = identifier) ;) (while_statement "while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }" while (parenthesized_expression "((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2)" ( (binary_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2" (pointer_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" * (cast_expression "(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22[1] + 0xf + iVar16 * 0x10)" ( (binary_expression "puVar22[1] + 0xf + iVar16 * 0x10" (binary_expression "puVar22[1] + 0xf" (subscript_expression "puVar22[1]" identifier [ number_literal ]) + number_literal) + (binary_expression "iVar16 * 0x10" identifier * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;" if (parenthesized_expression "(iVar16 == *(short *)((int)puVar22 + 0x2a))" ( (binary_expression "iVar16 == *(short *)((int)puVar22 + 0x2a)" identifier == (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (goto_statement "goto LAB_000a0e38;" goto statement_identifier ;)) })) (expression_statement "iVar14 = FUN_00028ce0(0);" (assignment_expression "iVar14 = FUN_00028ce0(0)" identifier = (call_expression "FUN_00028ce0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar16 + 1;" (assignment_expression "iVar12 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar14 + 0x1c) = piVar17[6];" (assignment_expression "*(int *)(iVar14 + 0x1c) = piVar17[6]" (pointer_expression "*(int *)(iVar14 + 0x1c)" * (cast_expression "(int *)(iVar14 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x1c)" ( (binary_expression "iVar14 + 0x1c" identifier + number_literal) )))) = (subscript_expression "piVar17[6]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar14 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar14 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(iVar14 + 0x30) = puVar22;" (assignment_expression "*(undefined4 **)(iVar14 + 0x30) = puVar22" (pointer_expression "*(undefined4 **)(iVar14 + 0x30)" * (cast_expression "(undefined4 **)(iVar14 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }" if (parenthesized_expression "(piVar34[iVar38 * 5 + 1] != 0)" ( (binary_expression "piVar34[iVar38 * 5 + 1] != 0" (subscript_expression "piVar34[iVar38 * 5 + 1]" identifier [ (binary_expression "iVar38 * 5 + 1" (binary_expression "iVar38 * 5" identifier * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                FUN_0003dcd0(0);\n              }" { (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = FUN_00059ec0(0);" (assignment_expression "uVar15 = FUN_00059ec0(0)" identifier = (call_expression "FUN_00059ec0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_00059ec0(uVar15);" (call_expression "FUN_00059ec0(uVar15)" identifier (argument_list "(uVar15)" ( identifier ))) ;) (expression_statement "FUN_0003a8b0();" (call_expression "FUN_0003a8b0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar38 < *piVar34)" ( (binary_expression "iVar38 < *piVar34" identifier < (pointer_expression "*piVar34" * identifier)) )) ;) })) (expression_statement "local_bc = local_bc + 1;" (assignment_expression "local_bc = local_bc + 1" identifier = (binary_expression "local_bc + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" identifier = (binary_expression "piVar17 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)local_bc < *piVar30)" ( (binary_expression "(int)local_bc < *piVar30" (cast_expression "(int)local_bc" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*piVar30" * identifier)) )) ;) }))) (expression_statement "iVar12 = local_d0[0x16];" (assignment_expression "iVar12 = local_d0[0x16]" identifier = (subscript_expression "local_d0[0x16]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = iVar12 + -1;" (assignment_expression "iVar38 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" if (parenthesized_expression "(-1 < iVar38)" ( (binary_expression "-1 < iVar38" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" { (do_statement "do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);" do (compound_statement "{\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        }" { (expression_statement "iVar38 = iVar38 + -1;" (assignment_expression "iVar38 = iVar38 + -1" identifier = (binary_expression "iVar38 + -1" identifier + number_literal)) ;) (expression_statement "FUN_0009a5f0(iVar12);" (call_expression "FUN_0009a5f0(iVar12)" identifier (argument_list "(iVar12)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar38 != -1)" ( (binary_expression "iVar38 != -1" identifier != number_literal) )) ;) })) (expression_statement "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));" (assignment_expression "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" identifier = (call_expression "CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" identifier (argument_list "((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" ( (call_expression "(int3)((uint)iVar12 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)iVar12 >> 8)" ( (binary_expression "(uint)iVar12 >> 8" (cast_expression "(uint)iVar12" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) )))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" { (if_statement "if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" if (parenthesized_expression "(0 < local_58[1][3])" ( (binary_expression "0 < local_58[1][3]" number_literal < (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ])) )) (compound_statement "{\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) ;) (do_statement "do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);" do (compound_statement "{\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          }" { (expression_statement "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);" (assignment_expression "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5])" identifier = (cast_expression "(int *)(iVar12 * 0x30 + piVar17[5])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 * 0x30 + piVar17[5])" ( (binary_expression "iVar12 * 0x30 + piVar17[5]" (binary_expression "iVar12 * 0x30" identifier * number_literal) + (subscript_expression "piVar17[5]" identifier [ number_literal ])) )))) ;) (if_statement "if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" if (parenthesized_expression "(((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               )" ( (binary_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)" (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" ( (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" ( (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" * (cast_expression "(byte *)((int)piVar34 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(piVar34[0xb] == 0 && piVar34[10] == 0)" ( (binary_expression "piVar34[0xb] == 0 && piVar34[10] == 0" (binary_expression "piVar34[0xb] == 0" (subscript_expression "piVar34[0xb]" identifier [ number_literal ]) == number_literal) && (binary_expression "piVar34[10] == 0" (subscript_expression "piVar34[10]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" { (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" identifier = (pointer_expression "*piVar34" * identifier)) ;) (if_statement "if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" if (parenthesized_expression "(local_a0 != 0)" ( (binary_expression "local_a0 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);" do (compound_statement "{\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                }" { (expression_statement "*(undefined4 *)((int)local_3c + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar11)" * (cast_expression "(undefined4 *)((int)local_3c + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + uVar11)" ( (binary_expression "(int)local_3c + uVar11" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" identifier = (binary_expression "uVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < 0x1c)" ( (binary_expression "uVar11 < 0x1c" identifier < number_literal) )) ;) (expression_statement "local_28 = '\x01';" (assignment_expression "local_28 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_3c[1] = unaff_EDI + -0x6e6f7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x6e6f7" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x6e6f7" identifier + number_literal)) ;) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x82347" identifier + number_literal)) ;) (if_statement "if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;" if (parenthesized_expression "((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))" ( (binary_expression "(iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) && (parenthesized_expression "(FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" ( (comma_expression "FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'" (call_expression "FUN_0002e610()" identifier (argument_list "()" ( ))) , (comma_expression "piVar17 = local_58[1], local_28 == '\0'" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) , (binary_expression "local_28 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')))) ))) )) (goto_statement "goto LAB_000a0030;" goto statement_identifier ;)) (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" identifier = (pointer_expression "*piVar34" * identifier)) ;) })) (expression_statement "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);" (call_expression "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10)" identifier (argument_list "(piVar10,iVar38,local_d0[9],0x10)" ( identifier , identifier , (subscript_expression "local_d0[9]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" * (cast_expression "(ushort *)((int)piVar34 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" * (cast_expression "(ushort *)((int)piVar34 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_000a0030:\n            iVar12 = iVar12 + 1;" statement_identifier : (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar12 < piVar17[3])" ( (binary_expression "iVar12 < piVar17[3]" identifier < (subscript_expression "piVar17[3]" identifier [ number_literal ])) )) ;) })) (if_statement "if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" if (parenthesized_expression "((uVar29 & 0x100) != 0)" ( (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" { (if_statement "if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" if (parenthesized_expression "(*piVar30 == 1)" ( (binary_expression "*piVar30 == 1" (pointer_expression "*piVar30" * identifier) == number_literal) )) (compound_statement "{\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" { (expression_statement "iVar12 = piVar30[0xc];" (assignment_expression "iVar12 = piVar30[0xc]" identifier = (subscript_expression "piVar30[0xc]" identifier [ number_literal ])) ;) (if_statement "if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" if (parenthesized_expression "(0 < *param_2)" ( (binary_expression "0 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" { (expression_statement "piVar17 = param_2 + 1;" (assignment_expression "piVar17 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a1290:\n              pcVar21 = (char *)*piVar17;" statement_identifier : (expression_statement "pcVar21 = (char *)*piVar17;" (assignment_expression "pcVar21 = (char *)*piVar17" identifier = (cast_expression "(char *)*piVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;)) (do_statement "do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );" do (compound_statement "{\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              }" { (if_statement "if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" { (labeled_statement "LAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar5 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" { (if_statement "if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" if (parenthesized_expression "((uVar11 & 0x1000) == 0)" ( (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" ( (binary_expression "uVar11 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" { (if_statement "if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;" if (parenthesized_expression "(((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0))" ( (binary_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)" (parenthesized_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c)))" ( (binary_expression "(*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "(*pcVar21 == -0x62)" ( (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" * identifier) == number_literal) )) && (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" ( (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" identifier == (pointer_expression "*(int *)(pcVar21 + 0x1c)" * (cast_expression "(int *)(pcVar21 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x1c)" ( (binary_expression "pcVar21 + 0x1c" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(*(int *)(pcVar21 + 0x20) < 0)" ( (binary_expression "*(int *)(pcVar21 + 0x20) < 0" (pointer_expression "*(int *)(pcVar21 + 0x20)" * (cast_expression "(int *)(pcVar21 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x20)" ( (binary_expression "pcVar21 + 0x20" identifier + number_literal) )))) < number_literal) ))) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;)) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 5;" (assignment_expression "piVar17 = piVar17 + 5" identifier = (binary_expression "piVar17 + 5" identifier + number_literal)) ;) (if_statement "if (iVar38 == *param_2) goto LAB_000a12dd;" if (parenthesized_expression "(iVar38 == *param_2)" ( (binary_expression "iVar38 == *param_2" identifier == (pointer_expression "*param_2" * identifier)) )) (goto_statement "goto LAB_000a12dd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1290;" goto statement_identifier ;) })) (if_statement "if ((uVar11 & 0x40000) == 0) break;" if (parenthesized_expression "((uVar11 & 0x40000) == 0)" ( (binary_expression "(uVar11 & 0x40000) == 0" (parenthesized_expression "(uVar11 & 0x40000)" ( (binary_expression "uVar11 & 0x40000" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" * (cast_expression "(int *)(pcVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x14)" ( (binary_expression "pcVar21 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pcVar21 == (char *)0x0) goto LAB_000144c2;" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000144c2;" goto statement_identifier ;)) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar21 + 0xc)" * (cast_expression "(char **)(pcVar21 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);" statement_identifier : (expression_statement "iVar38 = *(int *)(piVar30[6] + 8);" (assignment_expression "iVar38 = *(int *)(piVar30[6] + 8)" identifier = (pointer_expression "*(int *)(piVar30[6] + 8)" * (cast_expression "(int *)(piVar30[6] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 8)" ( (binary_expression "piVar30[6] + 8" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) ))))) ;)) (if_statement "if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" { (labeled_statement "LAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" statement_identifier : (if_statement "if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" if (parenthesized_expression "(*(char *)(iVar38 + 0x36) == '\0')" ( (binary_expression "*(char *)(iVar38 + 0x36) == '\0'" (pointer_expression "*(char *)(iVar38 + 0x36)" * (cast_expression "(char *)(iVar38 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x36)" ( (binary_expression "iVar38 + 0x36" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a12f0;" goto statement_identifier ;))) (if_statement "if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" if (parenthesized_expression "(*(short *)(iVar38 + 0x32) != 0)" ( (binary_expression "*(short *)(iVar38 + 0x32) != 0" (pointer_expression "*(short *)(iVar38 + 0x32)" * (cast_expression "(short *)(iVar38 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" statement_identifier : (expression_statement "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" (assignment_expression "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" identifier = (call_expression "FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" identifier (argument_list "(0xffffffff,0xffffffff,2,iVar38)" ( number_literal , number_literal , number_literal , identifier )))) ;)) (if_statement "if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" { (expression_statement "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);" (assignment_expression "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" identifier = (pointer_expression "*(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" * (cast_expression "(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar38 + 0x20) + uVar11 * 4)" ( (binary_expression "*(int *)(iVar38 + 0x20) + uVar11 * 4" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" if (parenthesized_expression "(0 < *param_2)" ( (binary_expression "0 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );" do (compound_statement "{\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    }" { (expression_statement "pcVar21 = (char *)param_2[iVar16 * 5 + 1];" (assignment_expression "pcVar21 = (char *)param_2[iVar16 * 5 + 1]" identifier = (cast_expression "(char *)param_2[iVar16 * 5 + 1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[iVar16 * 5 + 1]" identifier [ (binary_expression "iVar16 * 5 + 1" (binary_expression "iVar16 * 5" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nFUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" { (labeled_statement "FUN_000144b9:\n                    /* WARNING: Does not return */\n                        pcVar5 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) (while_statement "while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" while (parenthesized_expression "((uVar13 & 0x1000) != 0)" ( (binary_expression "(uVar13 & 0x1000) != 0" (parenthesized_expression "(uVar13 & 0x1000)" ( (binary_expression "uVar13 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" { (if_statement "if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" if (parenthesized_expression "((uVar13 & 0x40000) == 0)" ( (binary_expression "(uVar13 & 0x40000) == 0" (parenthesized_expression "(uVar13 & 0x40000)" ( (binary_expression "uVar13 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }" { (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar21 + 0xc)" * (cast_expression "(char **)(pcVar21 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" else (compound_statement "{\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" { (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" * (cast_expression "(int *)(pcVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x14)" ( (binary_expression "pcVar21 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if (pcVar21 == (char *)0x0) goto FUN_000144b9;" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto FUN_000144b9;" goto statement_identifier ;)) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" if (parenthesized_expression "(((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c)))" ( (binary_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)))" ( (binary_expression "(*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" (parenthesized_expression "(*pcVar21 == -0x62)" ( (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" * identifier) == number_literal) )) && (parenthesized_expression "(*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" ( (binary_expression "*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (pointer_expression "*(int *)(pcVar21 + 0x20)" * (cast_expression "(int *)(pcVar21 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x20)" ( (binary_expression "pcVar21 + 0x20" identifier + number_literal) )))) == (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" * (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" * (cast_expression "(int *)(iVar38 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 4)" ( (binary_expression "iVar38 + 4" identifier + number_literal) )))) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))))) ))) )) && (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" ( (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" identifier == (pointer_expression "*(int *)(pcVar21 + 0x1c)" * (cast_expression "(int *)(pcVar21 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x1c)" ( (binary_expression "pcVar21 + 0x1c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" { (expression_statement "puVar22 = (undefined4 *)FUN_0005da30();" (assignment_expression "puVar22 = (undefined4 *)FUN_0005da30()" identifier = (cast_expression "(undefined4 *)FUN_0005da30()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005da30()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" if (parenthesized_expression "(puVar22 == (undefined4 *)0x0)" ( (binary_expression "puVar22 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" { (expression_statement "puVar22 = *(undefined4 **)(*piVar10 + 8);" (assignment_expression "puVar22 = *(undefined4 **)(*piVar10 + 8)" identifier = (pointer_expression "*(undefined4 **)(*piVar10 + 8)" * (cast_expression "(undefined4 **)(*piVar10 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 8)" ( (binary_expression "*piVar10 + 8" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) ;) })) (expression_statement "bVar8 = *(byte *)*puVar22;" (assignment_expression "bVar8 = *(byte *)*puVar22" identifier = (pointer_expression "*(byte *)*puVar22" * (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier)))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1))" ( (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)*pbVar1)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)*pbVar1" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" { (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (while_statement "while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" while (parenthesized_expression "(bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]))" ( (comma_expression "bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (assignment_expression "bVar8 = ((byte *)*puVar22)[iVar14]" identifier = (subscript_expression "((byte *)*puVar22)[iVar14]" (parenthesized_expression "((byte *)*puVar22)" ( (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier)) )) [ identifier ])) , (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)pbVar1[iVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[iVar14]" identifier [ identifier ]))) )))))) )) (compound_statement "{\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) })) })) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" if (parenthesized_expression "(*param_2 <= iVar16)" ( (binary_expression "*param_2 <= iVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (compound_statement "{\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" { (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a1320;" goto statement_identifier ;) })) (labeled_statement "LAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;" statement_identifier : (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (goto_statement "goto LAB_000a0050;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" statement_identifier : (if_statement "if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" if (parenthesized_expression "(local_b4 == (int *)0x0)" ( (binary_expression "local_b4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" { (expression_statement "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) = (binary_expression "*(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_d0[2] = (int)param_2;" (assignment_expression "local_d0[2] = (int)param_2" (subscript_expression "local_d0[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) })) (labeled_statement "LAB_000a0050:\n        iVar38 = local_4c;" statement_identifier : (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" identifier = identifier) ;)) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" identifier = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" identifier = (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" identifier [ number_literal ]) [ number_literal ])) ;) (if_statement "if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" if (parenthesized_expression "(((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))))" ( (binary_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" (parenthesized_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0))" ( (binary_expression "(local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" (parenthesized_expression "(local_a0 == 1)" ( (binary_expression "local_a0 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" ( (binary_expression "(*(byte *)(local_58[0] + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(local_58[0] + 0xb) & 0x20)" ( (binary_expression "*(byte *)(local_58[0] + 0xb) & 0x20" (pointer_expression "*(byte *)(local_58[0] + 0xb)" * (cast_expression "(byte *)(local_58[0] + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58[0] + 0xb)" ( (binary_expression "local_58[0] + 0xb" (subscript_expression "local_58[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" ( (parenthesized_expression "(iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))" ( (comma_expression "iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x18)" identifier = (pointer_expression "*(int *)(iVar12 + 0x18)" * (cast_expression "(int *)(iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) ))))) , (binary_expression "*(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (binary_expression "*(int *)(iVar16 + 0x38) == 0" (pointer_expression "*(int *)(iVar16 + 0x38)" * (cast_expression "(int *)(iVar16 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x38)" ( (binary_expression "iVar16 + 0x38" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "((*(byte *)(iVar12 + 0x2d) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar12 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar12 + 0x2d) & 2)" ( (binary_expression "*(byte *)(iVar12 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar12 + 0x2d)" * (cast_expression "(byte *)(iVar12 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2d)" ( (binary_expression "iVar12 + 0x2d" identifier + number_literal) )))) & number_literal) )) == number_literal) )))) )) ))) )) (compound_statement "{\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }" { (expression_statement "iVar14 = *(int *)(iVar12 + 0x30);" (assignment_expression "iVar14 = *(int *)(iVar12 + 0x30)" identifier = (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(local_4c + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x2a) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x2a)" * (cast_expression "(undefined2 *)(local_4c + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x2a)" ( (binary_expression "local_4c + 0x2a" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" * (cast_expression "(undefined4 *)(local_4c + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x24)" ( (binary_expression "local_4c + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar28 = FUN_000624e0(0,0,0x82,0);" (assignment_expression "iVar28 = FUN_000624e0(0,0,0x82,0)" identifier = (call_expression "FUN_000624e0(0,0,0x82,0)" identifier (argument_list "(0,0,0x82,0)" ( number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }" { (expression_statement "iVar16 = *(int *)(iVar16 + 8);" (assignment_expression "iVar16 = *(int *)(iVar16 + 8)" identifier = (pointer_expression "*(int *)(iVar16 + 8)" * (cast_expression "(int *)(iVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 8)" ( (binary_expression "iVar16 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" { (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" else (compound_statement "{\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" { (do_statement "do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);" do (compound_statement "{\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              }" { (if_statement "if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" if (parenthesized_expression "(((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4))" ( (binary_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)" (parenthesized_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0))" ( (binary_expression "(*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)" (parenthesized_expression "(*(char *)(iVar16 + 0x36) != '\0')" ( (binary_expression "*(char *)(iVar16 + 0x36) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x36)" * (cast_expression "(char *)(iVar16 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x36)" ( (binary_expression "iVar16 + 0x36" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(iVar16 + 0x24) == 0)" ( (binary_expression "*(int *)(iVar16 + 0x24) == 0" (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) < 4)" ( (binary_expression "*(ushort *)(iVar16 + 0x32) < 4" (pointer_expression "*(ushort *)(iVar16 + 0x32)" * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" { (expression_statement "bVar8 = *(byte *)(iVar16 + 0x37);" (assignment_expression "bVar8 = *(byte *)(iVar16 + 0x37)" identifier = (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) ))))) ;) (if_statement "if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" if (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) == 0)" ( (binary_expression "*(ushort *)(iVar16 + 0x32) == 0" (pointer_expression "*(ushort *)(iVar16 + 0x32)" * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    uVar11 = 0;\n                  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" else (compound_statement "{\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);" do (compound_statement "{\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    }" { (expression_statement "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);" (assignment_expression "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" identifier = (call_expression "FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" identifier (argument_list "(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" ( number_literal , number_literal , (binary_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82" (parenthesized_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80)" ( (binary_expression "-(uint)((bVar8 & 8) == 0) & 0xffffff80" (unary_expression "-(uint)((bVar8 & 8) == 0)" - (call_expression "(uint)((bVar8 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((bVar8 & 8) == 0)" ( (binary_expression "(bVar8 & 8) == 0" (parenthesized_expression "(bVar8 & 8)" ( (binary_expression "bVar8 & 8" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal) , identifier )))) ;) (if_statement "if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" { (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;" (assignment_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28" (pointer_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" * (cast_expression "(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 0x30) + uVar13 * 4)" ( (binary_expression "*(int *)(iVar38 + 0x30) + uVar13 * 4" (pointer_expression "*(int *)(iVar38 + 0x30)" * (cast_expression "(int *)(iVar38 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x30)" ( (binary_expression "iVar38 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar13 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar13 < (int)uVar11)" ( (binary_expression "(int)uVar13 < (int)uVar11" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (uVar13 != uVar11) goto LAB_000a1960;" if (parenthesized_expression "(uVar13 != uVar11)" ( (binary_expression "uVar13 != uVar11" identifier != identifier) )) (goto_statement "goto LAB_000a1960;" goto statement_identifier ;)) }))) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1201;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1201" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = (undefined2)uVar11;" (assignment_expression "uVar9 = (undefined2)uVar11" identifier = (cast_expression "(undefined2)uVar11" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (if_statement "if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" if (parenthesized_expression "(((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0))" ( (binary_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar16 + 0x37) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 0x20)" ( (binary_expression "*(byte *)(iVar16 + 0x37) & 0x20" (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40))" ( (binary_expression "*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)" (pointer_expression "*(uint *)(iVar12 + 0x40)" * (cast_expression "(uint *)(iVar12 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x40)" ( (binary_expression "iVar12 + 0x40" identifier + number_literal) )))) & (pointer_expression "*(uint *)(iVar16 + 0x40)" * (cast_expression "(uint *)(iVar16 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x40)" ( (binary_expression "iVar16 + 0x40" identifier + number_literal) ))))) )) != number_literal) || (binary_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c))" ( (binary_expression "*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)" (pointer_expression "*(uint *)(iVar12 + 0x3c)" * (cast_expression "(uint *)(iVar12 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) & (pointer_expression "*(uint *)(iVar16 + 0x3c)" * (cast_expression "(uint *)(iVar16 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x3c)" ( (binary_expression "iVar16 + 0x3c" identifier + number_literal) ))))) )) != number_literal)) ))) )) (compound_statement "{\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" { (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" else (compound_statement "{\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" { (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1241;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1241" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto LAB_000a1a26;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);" statement_identifier : (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "iVar16 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar16 = *(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) ))))) ;) }) while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) ;) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) }) (else_clause "else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" else (compound_statement "{\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" { (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1101;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1101" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(int **)(iVar38 + 0x30) = iVar28;" (assignment_expression "**(int **)(iVar38 + 0x30) = iVar28" (pointer_expression "**(int **)(iVar38 + 0x30)" * (pointer_expression "*(int **)(iVar38 + 0x30)" * (cast_expression "(int **)(iVar38 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar38 + 0x30)" ( (binary_expression "iVar38 + 0x30" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x21;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x21" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" { (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" identifier = (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" identifier [ number_literal ]) [ number_literal ])) ;) (goto_statement "goto LAB_000a0070;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;" statement_identifier : (expression_statement "*(undefined2 *)(iVar38 + 0x16) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x16) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x16)" * (cast_expression "(undefined2 *)(iVar38 + 0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x16)" ( (binary_expression "iVar38 + 0x16" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar17[0xc9] = iVar38;" (assignment_expression "piVar17[0xc9] = iVar38" (subscript_expression "piVar17[0xc9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(iVar38 + 8) = 1;" (assignment_expression "*(undefined4 *)(iVar38 + 8) = 1" (pointer_expression "*(undefined4 *)(iVar38 + 8)" * (cast_expression "(undefined4 *)(iVar38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar38 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar38 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar38 + 0xc)" * (cast_expression "(undefined4 *)(iVar38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(piVar17 + 0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar17 + 0x12) = 1" (pointer_expression "*(undefined2 *)(piVar17 + 0x12)" * (cast_expression "(undefined2 *)(piVar17 + 0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 0x12)" ( (binary_expression "piVar17 + 0x12" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar17[0xbc] = iVar14;" (assignment_expression "piVar17[0xbc] = iVar14" (subscript_expression "piVar17[0xbc]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" if (parenthesized_expression "((undefined4 *)piVar17[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)piVar17[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)piVar17[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" { (expression_statement "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];" (assignment_expression "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2]" (pointer_expression "*(char *)((int)piVar17 + 0x2f)" * (cast_expression "(char *)((int)piVar17 + 0x2f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x2f)" ( (binary_expression "(int)piVar17 + 0x2f" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*(undefined4 *)piVar17[2]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined4 *)piVar17[2]" * (cast_expression "(undefined4 *)piVar17[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[2]" identifier [ number_literal ]))))) ;) })) (if_statement "if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" if (parenthesized_expression "((*(byte *)((int)piVar17 + 0x2d) & 1) != 0)" ( (binary_expression "(*(byte *)((int)piVar17 + 0x2d) & 1) != 0" (parenthesized_expression "(*(byte *)((int)piVar17 + 0x2d) & 1)" ( (binary_expression "*(byte *)((int)piVar17 + 0x2d) & 1" (pointer_expression "*(byte *)((int)piVar17 + 0x2d)" * (cast_expression "(byte *)((int)piVar17 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x2d)" ( (binary_expression "(int)piVar17 + 0x2d" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" { (expression_statement "*(undefined1 *)((int)piVar17 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)piVar17 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)piVar17 + 0x33)" * (cast_expression "(undefined1 *)((int)piVar17 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x33)" ( (binary_expression "(int)piVar17 + 0x33" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (labeled_statement "LAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" statement_identifier : (if_statement "if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" if (parenthesized_expression "(local_d0[2] == 0)" ( (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" { (labeled_statement "LAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" statement_identifier : (if_statement "if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x10)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" { (expression_statement "local_d0[0x10] = -1;" (assignment_expression "local_d0[0x10] = -1" (subscript_expression "local_d0[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x11] = -1;" (assignment_expression "local_d0[0x11] = -1" (subscript_expression "local_d0[0x11]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (if_statement "if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" if (parenthesized_expression "((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0'))" ( (binary_expression "(piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')" (parenthesized_expression "(piVar10[9] == 0)" ( (binary_expression "piVar10[9] == 0" (subscript_expression "piVar10[9]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" { (if_statement "if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" if (parenthesized_expression "((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0))" ( (binary_expression "(*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)" (parenthesized_expression "(*(byte *)((int)local_d0 + 0x2e) < 2)" ( (binary_expression "*(byte *)((int)local_d0 + 0x2e) < 2" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) || (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }" { (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" else (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" { (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x49) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x49) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x49) & 1)" ( (binary_expression "*(byte *)(iVar4 + 0x49) & 1" (pointer_expression "*(byte *)(iVar4 + 0x49)" * (cast_expression "(byte *)(iVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x49)" ( (binary_expression "iVar4 + 0x49" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" { (expression_statement "uVar41 = FUN_0003db30();" (assignment_expression "uVar41 = FUN_0003db30()" identifier = (call_expression "FUN_0003db30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" if (parenthesized_expression "(local_58[2] != (int *)0x0)" ( (binary_expression "local_58[2] != (int *)0x0" (subscript_expression "local_58[2]" identifier [ number_literal ]) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" { (expression_statement "uVar42 = FUN_0003db30();" (assignment_expression "uVar42 = FUN_0003db30()" identifier = (call_expression "FUN_0003db30()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar41 = uVar42 | uVar41;" (assignment_expression "uVar41 = uVar42 | uVar41" identifier = (binary_expression "uVar42 | uVar41" identifier | identifier)) ;) })) (expression_statement "local_b4 = (int *)(uVar41 >> 0x20);" (assignment_expression "local_b4 = (int *)(uVar41 >> 0x20)" identifier = (cast_expression "(int *)(uVar41 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar41 >> 0x20)" ( (binary_expression "uVar41 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_bc = (uint)uVar41;" (assignment_expression "local_bc = (uint)uVar41" identifier = (cast_expression "(uint)uVar41" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;" (assignment_expression "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1" identifier = (binary_expression "*(byte *)((int)local_d0 + 0x2e) - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (if_statement "if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" { (do_statement "do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);" do (compound_statement "{\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  }" { (expression_statement "iVar38 = local_d0[iVar12 * 0x11 + 0xc9];" (assignment_expression "iVar38 = local_d0[iVar12 * 0x11 + 0xc9]" identifier = (subscript_expression "local_d0[iVar12 * 0x11 + 0xc9]" identifier [ (binary_expression "iVar12 * 0x11 + 0xc9" (binary_expression "iVar12 * 0x11" identifier * number_literal) + number_literal) ])) ;) (if_statement "if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" if (parenthesized_expression "(((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))))" ( (binary_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" (parenthesized_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0)" ( (binary_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0" (parenthesized_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)" ( (binary_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8" (pointer_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" * (cast_expression "(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" ( (binary_expression "local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "local_d0[1] + 0x2c" (subscript_expression "local_d0[1]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar38 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" ( (parenthesized_expression "((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))" ( (binary_expression "(uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) || (parenthesized_expression "((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar38 + 0x25) & 0x10)" ( (binary_expression "*(byte *)(iVar38 + 0x25) & 0x10" (pointer_expression "*(byte *)(iVar38 + 0x25)" * (cast_expression "(byte *)(iVar38 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x25)" ( (binary_expression "iVar38 + 0x25" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" { (expression_statement "uVar11 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar11 = *(uint *)(iVar38 + 8)" identifier = (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" if (parenthesized_expression "(((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0)" ( (binary_expression "((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0" (binary_expression "((uint)local_b4 & uVar13) == 0" (parenthesized_expression "((uint)local_b4 & uVar13)" ( (binary_expression "(uint)local_b4 & uVar13" (cast_expression "(uint)local_b4" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) == number_literal) && (binary_expression "(local_bc & uVar11) == 0" (parenthesized_expression "(local_bc & uVar11)" ( (binary_expression "local_bc & uVar11" identifier & identifier) )) == number_literal)) )) (compound_statement "{\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" { (expression_statement "piVar17 = (int *)local_58[1][5];" (assignment_expression "piVar17 = (int *)local_58[1][5]" identifier = (cast_expression "(int *)local_58[1][5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_58[1][5]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ]))) ;) (expression_statement "piVar34 = piVar17 + local_58[1][3] * 0xc;" (assignment_expression "piVar34 = piVar17 + local_58[1][3] * 0xc" identifier = (binary_expression "piVar17 + local_58[1][3] * 0xc" identifier + (binary_expression "local_58[1][3] * 0xc" (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ]) * number_literal))) ;) (if_statement "if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" if (parenthesized_expression "(piVar17 < piVar34)" ( (binary_expression "piVar17 < piVar34" identifier < identifier) )) (compound_statement "{\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" { (expression_statement "piVar23 = piVar17;" (assignment_expression "piVar23 = piVar17" identifier = identifier) ;) (do_statement "do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);" do (compound_statement "{\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          }" { (expression_statement "uVar25 = uVar11;" (assignment_expression "uVar25 = uVar11" identifier = identifier) ;) (expression_statement "uVar43 = uVar13;" (assignment_expression "uVar43 = uVar13" identifier = identifier) ;) (if_statement "if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" if (parenthesized_expression "(((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))))" ( (binary_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" (parenthesized_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0)" ( (binary_expression "(piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0" (binary_expression "(piVar23[0xb] & uVar13) != 0" (parenthesized_expression "(piVar23[0xb] & uVar13)" ( (binary_expression "piVar23[0xb] & uVar13" (subscript_expression "piVar23[0xb]" identifier [ number_literal ]) & identifier) )) != number_literal) || (binary_expression "(piVar23[10] & uVar11) != 0" (parenthesized_expression "(piVar23[10] & uVar11)" ( (binary_expression "piVar23[10] & uVar11" (subscript_expression "piVar23[10]" identifier [ number_literal ]) & identifier) )) != number_literal)) )) && (parenthesized_expression "(((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" ( (parenthesized_expression "((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))" ( (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar23 + 4) & 1)" ( (binary_expression "*(byte *)(*piVar23 + 4) & 1" (pointer_expression "*(byte *)(*piVar23 + 4)" * (cast_expression "(byte *)(*piVar23 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + 4)" ( (binary_expression "*piVar23 + 4" (pointer_expression "*piVar23" * identifier) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" ( (binary_expression "(int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (cast_expression "(int)*(short *)(*piVar23 + 0x26)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*piVar23 + 0x26)" * (cast_expression "(short *)(*piVar23 + 0x26)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + 0x26)" ( (binary_expression "*piVar23 + 0x26" (pointer_expression "*piVar23" * identifier) + number_literal) ))))) != (pointer_expression "*(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" * (cast_expression "(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" ( (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30" (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (subscript_expression "local_d0[1]" identifier [ number_literal ]) + (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar38 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) * number_literal)) + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" { (if_statement "if (piVar23 < piVar34) goto LAB_000a17a8;" if (parenthesized_expression "(piVar23 < piVar34)" ( (binary_expression "piVar23 < piVar34" identifier < identifier) )) (goto_statement "goto LAB_000a17a8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar23 = piVar23 + 0xc;" (assignment_expression "piVar23 = piVar23 + 0xc" identifier = (binary_expression "piVar23 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar23 < piVar34)" ( (binary_expression "piVar23 < piVar34" identifier < identifier) )) ;) (while_statement "while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" { (if_statement "if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" if (parenthesized_expression "((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0)" ( (binary_expression "(uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0" (binary_expression "(uVar43 & piVar17[0xb]) != 0" (parenthesized_expression "(uVar43 & piVar17[0xb])" ( (binary_expression "uVar43 & piVar17[0xb]" identifier & (subscript_expression "piVar17[0xb]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "(uVar25 & piVar17[10]) != 0" (parenthesized_expression "(uVar25 & piVar17[10])" ( (binary_expression "uVar25 & piVar17[10]" identifier & (subscript_expression "piVar17[10]" identifier [ number_literal ])) )) != number_literal)) )) (compound_statement "{\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" { (expression_statement "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;" (assignment_expression "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" * (cast_expression "(ushort *)((int)piVar17 + 10U)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 10U)" ( (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" * (cast_expression "(ushort *)((int)piVar17 + 10U)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 10U)" ( (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "piVar17 = piVar17 + 0xc;" (assignment_expression "piVar17 = piVar17 + 0xc" identifier = (binary_expression "piVar17 + 0xc" identifier + number_literal)) ;) (if_statement "if (piVar34 <= piVar17) break;" if (parenthesized_expression "(piVar34 <= piVar17)" ( (binary_expression "piVar34 <= piVar17" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar25 = *(uint *)(iVar38 + 8)" identifier = (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar43 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar43 = *(uint *)(iVar38 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) ))))) ;) })) })) (expression_statement "local_c8 = ~uVar13 & local_c8;" (assignment_expression "local_c8 = ~uVar13 & local_c8" identifier = (binary_expression "~uVar13 & local_c8" (unary_expression "~uVar13" ~ identifier) & identifier)) ;) (expression_statement "local_cc = ~uVar11 & local_cc;" (assignment_expression "local_cc = ~uVar11 & local_cc" identifier = (binary_expression "~uVar11 & local_cc" (unary_expression "~uVar11" ~ identifier) & identifier)) ;) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" identifier = (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" if (parenthesized_expression "(bVar8 - 1 != iVar12)" ( (binary_expression "bVar8 - 1 != iVar12" (binary_expression "bVar8 - 1" identifier - number_literal) != identifier) )) (compound_statement "{\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" { (expression_statement "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);" (call_expression "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" identifier (argument_list "(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" ( (binary_expression "local_b8 + iVar12 * 0x11" identifier + (binary_expression "iVar12 * 0x11" identifier * number_literal)) , (binary_expression "local_d0 + iVar12 * 0x11 + 0xcc" (binary_expression "local_d0 + iVar12 * 0x11" identifier + (binary_expression "iVar12 * 0x11" identifier * number_literal)) + number_literal) , (binary_expression "((bVar8 - 1) - iVar12) * 0x44" (parenthesized_expression "((bVar8 - 1) - iVar12)" ( (binary_expression "(bVar8 - 1) - iVar12" (parenthesized_expression "(bVar8 - 1)" ( (binary_expression "bVar8 - 1" identifier - number_literal) )) - identifier) )) * number_literal) ))) ;) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" identifier = (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "local_a0 = local_a0 + -1;" (assignment_expression "local_a0 = local_a0 + -1" identifier = (binary_expression "local_a0 + -1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;" (assignment_expression "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar8 - 1" identifier - number_literal)) ;) })) })) (labeled_statement "LAB_000a17a8:\n                    iVar12 = iVar12 + -1;" statement_identifier : (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) })) }))) (expression_statement "uVar40 = CONCAT44(local_c8,local_cc);" (assignment_expression "uVar40 = CONCAT44(local_c8,local_cc)" identifier = (call_expression "CONCAT44(local_c8,local_cc)" identifier (argument_list "(local_c8,local_cc)" ( identifier , identifier )))) ;) (expression_statement "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];" (assignment_expression "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" * (cast_expression "(int *)(*local_d0 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_d0 + 0x80)" ( (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" * identifier) + number_literal) )))) = (binary_expression "*(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" * (cast_expression "(int *)(*local_d0 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_d0 + 0x80)" ( (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" * identifier) + number_literal) )))) + (cast_expression "(int)(short)local_d0[0x12]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_d0[0x12]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_d0[0x12]" identifier [ number_literal ]))))) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" if (parenthesized_expression "((uVar29 & 4) != 0)" ( (binary_expression "(uVar29 & 4) != 0" (parenthesized_expression "(uVar29 & 4)" ( (binary_expression "uVar29 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" { (expression_statement "uVar11 = *(uint *)(local_d0[0xc9] + 0x24);" (assignment_expression "uVar11 = *(uint *)(local_d0[0xc9] + 0x24)" identifier = (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" * (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0xc9] + 0x24)" ( (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }" if (parenthesized_expression "((uVar11 & 0x1000) == 0)" ( (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" ( (binary_expression "uVar11 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }" { (if_statement "if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;" if (parenthesized_expression "((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))))" ( (binary_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" (parenthesized_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0))" ( (binary_expression "((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)" (parenthesized_expression "((uVar29 & 8) == 0)" ( (binary_expression "(uVar29 & 8) == 0" (parenthesized_expression "(uVar29 & 8)" ( (binary_expression "uVar29 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(piVar30[6] + 0x38) != 0)" ( (binary_expression "*(int *)(piVar30[6] + 0x38) != 0" (pointer_expression "*(int *)(piVar30[6] + 0x38)" * (cast_expression "(int *)(piVar30[6] + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 0x38)" ( (binary_expression "piVar30[6] + 0x38" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" ( (parenthesized_expression "((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))" ( (binary_expression "(uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)" (binary_expression "(uVar11 & 0x2000) != 0" (parenthesized_expression "(uVar11 & 0x2000)" ( (binary_expression "uVar11 & 0x2000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((uVar29 & 0x10) == 0)" ( (binary_expression "(uVar29 & 0x10) == 0" (parenthesized_expression "(uVar29 & 0x10)" ( (binary_expression "uVar29 & 0x10" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_000a02e0;" goto statement_identifier ;)) (expression_statement "uVar24 = 2;" (assignment_expression "uVar24 = 2" identifier = number_literal) ;) }) (else_clause "else {\n                uVar24 = 1;\n              }" else (compound_statement "{\n                uVar24 = 1;\n              }" { (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) }))) (expression_statement "*(undefined1 *)((int)local_d0 + 0x31) = uVar24;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x31) = uVar24" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x31)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x31)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" if (parenthesized_expression "(((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0))" ( (binary_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)" (parenthesized_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20)" ( (binary_expression "*(byte *)(piVar30[6] + 0x24) & 0x20" (pointer_expression "*(byte *)(piVar30[6] + 0x24)" * (cast_expression "(byte *)(piVar30[6] + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 0x24)" ( (binary_expression "piVar30[6] + 0x24" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((uVar11 & 0x40) != 0)" ( (binary_expression "(uVar11 & 0x40) != 0" (parenthesized_expression "(uVar11 & 0x40)" ( (binary_expression "uVar11 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" { (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }" if (parenthesized_expression "((uVar29 & 8) != 0)" ( (binary_expression "(uVar29 & 8) != 0" (parenthesized_expression "(uVar29 & 8)" ( (binary_expression "uVar29 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar8 = 8;\n                }" { (expression_statement "bVar8 = 8;" (assignment_expression "bVar8 = 8" identifier = number_literal) ;) })) (expression_statement "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;" (assignment_expression "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf" (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" * (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0xc9] + 0x24)" ( (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "uVar11 & 0xffffffbf" identifier & number_literal)) ;) })) })) (labeled_statement "LAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" statement_identifier : (if_statement "if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" if (parenthesized_expression "(local_a0 < 1)" ( (binary_expression "local_a0 < 1" identifier < number_literal) )) (compound_statement "{\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }" { (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;)) }) (else_clause "else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" else (compound_statement "{\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" { (expression_statement "piVar17 = local_b8;" (assignment_expression "piVar17 = local_b8" identifier = identifier) ;) (do_statement "do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);" do (compound_statement "{\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              }" { (expression_statement "uVar11 = (uint)*(byte *)(piVar17 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(piVar17 + 9)" identifier = (binary_expression "(uint)*(byte *)(piVar17 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(piVar17 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 9)" ( (binary_expression "piVar17 + 9" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" identifier = (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }" if (parenthesized_expression "(puVar22[0x12] == 0)" ( (binary_expression "puVar22[0x12] == 0" (subscript_expression "puVar22[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  iVar12 = -1000000;\n                }" { (expression_statement "iVar12 = -1000000;" (assignment_expression "iVar12 = -1000000" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar12 = FUN_000304d0();\n                }" else (compound_statement "{\n                  iVar12 = FUN_000304d0();\n                }" { (expression_statement "iVar12 = FUN_000304d0();" (assignment_expression "iVar12 = FUN_000304d0()" identifier = (call_expression "FUN_000304d0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar38 = piVar17[0xe];" (assignment_expression "iVar38 = piVar17[0xe]" identifier = (subscript_expression "piVar17[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" if (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0))" ( (binary_expression "((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 2) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 2)" ( (binary_expression "*(byte *)(puVar22 + 9) & 2" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(puVar22[3] == 0)" ( (binary_expression "puVar22[3] == 0" (subscript_expression "puVar22[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" { (if_statement "if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" if (parenthesized_expression "((uVar13 & 0x400) == 0)" ( (binary_expression "(uVar13 & 0x400) == 0" (parenthesized_expression "(uVar13 & 0x400)" ( (binary_expression "uVar13 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }" { (if_statement "if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" if (parenthesized_expression "(puVar22[0xe] == 0)" ( (binary_expression "puVar22[0xe] == 0" (subscript_expression "puVar22[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" { (if_statement "if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" if (parenthesized_expression "(((uVar13 & 0x40) == 0) && (uVar6 == 0))" ( (binary_expression "((uVar13 & 0x40) == 0) && (uVar6 == 0)" (parenthesized_expression "((uVar13 & 0x40) == 0)" ( (binary_expression "(uVar13 & 0x40) == 0" (parenthesized_expression "(uVar13 & 0x40)" ( (binary_expression "uVar13 & 0x40" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" { (expression_statement "uVar15 = 0x6d;" (assignment_expression "uVar15 = 0x6d" identifier = number_literal) ;) (if_statement "if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" if (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) != '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) != '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" { (expression_statement "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc]" (subscript_expression "local_d0[6]" identifier [ number_literal ]) = (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" identifier [ (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar15 = 0x6e;" (assignment_expression "uVar15 = 0x6e" identifier = number_literal) ;) })) (expression_statement "FUN_0005c7e0(puVar22,uVar15);" (call_expression "FUN_0005c7e0(puVar22,uVar15)" identifier (argument_list "(puVar22,uVar15)" ( identifier , identifier ))) ;) (if_statement "if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" if (parenthesized_expression "(((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0))" ( (binary_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)" (parenthesized_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40))" ( (binary_expression "(*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)" (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) < 0x40)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) < 0x40" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) ))) )) && (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" ( (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" { (expression_statement "uVar13 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar13 = piVar30[uVar11 * 0x11 + 0xf]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" identifier [ (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];" (assignment_expression "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1]" identifier = (subscript_expression "(piVar30 + uVar11 * 0x11 + 0xf)[1]" (parenthesized_expression "(piVar30 + uVar11 * 0x11 + 0xf)" ( (binary_expression "piVar30 + uVar11 * 0x11 + 0xf" (binary_expression "piVar30 + uVar11 * 0x11" identifier + (binary_expression "uVar11 * 0x11" identifier * number_literal)) + number_literal) )) [ number_literal ])) ;) (if_statement "if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" if (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" ( (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" identifier != number_literal) || (binary_expression "uVar13 != 0" identifier != number_literal)) )) (compound_statement "{\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" { (do_statement "do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);" do (compound_statement "{\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            }" { (expression_statement "uVar13 = uVar13 >> 1 | uVar25 << 0x1f;" (assignment_expression "uVar13 = uVar13 >> 1 | uVar25 << 0x1f" identifier = (binary_expression "uVar13 >> 1 | uVar25 << 0x1f" (binary_expression "uVar13 >> 1" identifier >> number_literal) | (binary_expression "uVar25 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar25 = uVar25 >> 1;" (assignment_expression "uVar25 = uVar25 >> 1" identifier = (binary_expression "uVar25 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" ( (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" identifier != number_literal) || (binary_expression "uVar13 != 0" identifier != number_literal)) )) ;) })) (expression_statement "FUN_000370b0(0xfffffffd);" (call_expression "FUN_000370b0(0xfffffffd)" identifier (argument_list "(0xfffffffd)" ( number_literal ))) ;) })) (if_statement "if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" ( (binary_expression "0 < *(int *)(iVar3 + 0x68)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) )) (compound_statement "{\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" { (expression_statement "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;" (assignment_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8" (pointer_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" * (cast_expression "(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" ( (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100)" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) )))) * number_literal) + (pointer_expression "*(int *)(iVar3 + 100)" * (cast_expression "(int *)(iVar3 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 100)" ( (binary_expression "iVar3 + 100" identifier + number_literal) ))))) + number_literal) )))) = (cast_expression "(ushort)bVar8" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) })) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" else (compound_statement "{\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" { (expression_statement "FUN_00049420(0,*puVar22);" (call_expression "FUN_00049420(0,*puVar22)" identifier (argument_list "(0,*puVar22)" ( number_literal , (pointer_expression "*puVar22" * identifier) ))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) })) }) (else_clause "else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" else (compound_statement "{\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" { (for_statement "for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }" for ( (assignment_expression "piVar34 = (int *)puVar22[0x10]" identifier = (cast_expression "(int *)puVar22[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar22[0x10]" identifier [ number_literal ]))) ; (parenthesized_expression "(piVar34 != (int *)0x0 && (iVar4 != *piVar34))" ( (binary_expression "piVar34 != (int *)0x0 && (iVar4 != *piVar34)" (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 != *piVar34)" ( (binary_expression "iVar4 != *piVar34" identifier != (pointer_expression "*piVar34" * identifier)) ))) )) ; (assignment_expression "piVar34 = (int *)piVar34[6]" identifier = (cast_expression "(int *)piVar34[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar34[6]" identifier [ number_literal ]))) ) (compound_statement "{\n                    }" { })) (expression_statement "FUN_000497a0(0,0);" (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_000370b0(0xfffffff4);" (call_expression "FUN_000370b0(0xfffffff4)" identifier (argument_list "(0xfffffff4)" ( number_literal ))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) })) (if_statement "if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" if (parenthesized_expression "((uVar13 & 0x200) != 0)" ( (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" ( (binary_expression "uVar13 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" { (expression_statement "iVar16 = *(int *)(iVar38 + 0x20);" (assignment_expression "iVar16 = *(int *)(iVar38 + 0x20)" identifier = (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }" if (parenthesized_expression "((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0))" ( (binary_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)" (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2))" ( (binary_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" ( (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 3) != 2)" ( (binary_expression "(*(byte *)(iVar16 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar16 + 0x37) & 3" (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }" { (if_statement "if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" if (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }" { (if_statement "if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }" if (parenthesized_expression "((uVar6 == 0) || (param_4 == 0))" ( (binary_expression "(uVar6 == 0) || (param_4 == 0)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }" { (expression_statement "iVar14 = piVar10[10];" (assignment_expression "iVar14 = piVar10[10]" identifier = (subscript_expression "piVar10[10]" identifier [ number_literal ])) ;) (expression_statement "piVar10[10] = iVar14 + 1;" (assignment_expression "piVar10[10] = iVar14 + 1" (subscript_expression "piVar10[10]" identifier [ number_literal ]) = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17[2] = iVar14;" (assignment_expression "piVar17[2] = iVar14" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                        piVar17[2] = param_4;\n                      }" else (compound_statement "{\n                        piVar17[2] = param_4;\n                      }" { (expression_statement "piVar17[2] = param_4;" (assignment_expression "piVar17[2] = param_4" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" else (compound_statement "{\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" { (expression_statement "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);" (assignment_expression "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" identifier = (pointer_expression "*(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" * (cast_expression "(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[uVar11 * 0x11 + 6] + 8)" ( (binary_expression "piVar30[uVar11 * 0x11 + 6] + 8" (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) + number_literal) ))))) ;) (expression_statement "iVar28 = param_4;" (assignment_expression "iVar28 = param_4" identifier = identifier) ;) (if_statement "if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" if (parenthesized_expression "((iVar16 != iVar14) && (iVar14 != 0))" ( (binary_expression "(iVar16 != iVar14) && (iVar14 != 0)" (parenthesized_expression "(iVar16 != iVar14)" ( (binary_expression "iVar16 != iVar14" identifier != identifier) )) && (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) ))) )) (compound_statement "{\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" { (do_statement "do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);" do (compound_statement "{\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        }" { (expression_statement "iVar14 = *(int *)(iVar14 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x14)" identifier = (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(iVar16 != iVar14)" ( (binary_expression "iVar16 != iVar14" identifier != identifier) )) ;) })) (expression_statement "local_d0[7] = iVar28;" (assignment_expression "local_d0[7] = iVar28" (subscript_expression "local_d0[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar17[2] = iVar28;" (assignment_expression "piVar17[2] = iVar28" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);" (call_expression "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12)" identifier (argument_list "(*(undefined4 *)(iVar16 + 0x2c),iVar12)" ( (pointer_expression "*(undefined4 *)(iVar16 + 0x2c)" * (cast_expression "(undefined4 *)(iVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" if (parenthesized_expression "(((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       )" ( (binary_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" (parenthesized_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0))" ( (binary_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)" (parenthesized_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0))" ( (binary_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0)" ( (binary_expression "(*(uint *)(iVar38 + 0x24) & 0xf) != 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0xf)" ( (binary_expression "*(uint *)(iVar38 + 0x24) & 0xf" (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" ( (binary_expression "(*(uint *)(iVar38 + 0x24) & 0x8002) == 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0x8002)" ( (binary_expression "*(uint *)(iVar38 + 0x24) & 0x8002" (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(byte *)(local_d0 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(local_d0 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(local_d0 + 0xb) & 1)" ( (binary_expression "*(byte *)(local_d0 + 0xb) & 1" (pointer_expression "*(byte *)(local_d0 + 0xb)" * (cast_expression "(byte *)(local_d0 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" ( (parenthesized_expression "(*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68)))" ( (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))" (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02'" (pointer_expression "*(char *)((int)local_d0 + 0x33)" * (cast_expression "(char *)((int)local_d0 + 0x33)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) && (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" ( (binary_expression "0 < *(int *)(iVar3 + 0x68)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" { (expression_statement "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;" (assignment_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2" (pointer_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" ( (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12" (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 100)" * (cast_expression "(int *)(iVar3 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 100)" ( (binary_expression "iVar3 + 100" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) )))) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n                    piVar17[2] = piVar17[1];\n                  }" else (compound_statement "{\n                    piVar17[2] = piVar17[1];\n                  }" { (expression_statement "piVar17[2] = piVar17[1];" (assignment_expression "piVar17[2] = piVar17[1]" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (subscript_expression "piVar17[1]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (-1 < iVar12) {\n                  FUN_000893e0();\n                }" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (compound_statement "{\n                  FUN_000893e0();\n                }" { (expression_statement "FUN_000893e0();" (call_expression "FUN_000893e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" identifier = (binary_expression "piVar17 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar17 != local_d0 + local_a0 * 0x11 + 0xbb)" ( (binary_expression "piVar17 != local_d0 + local_a0 * 0x11 + 0xbb" identifier != (binary_expression "local_d0 + local_a0 * 0x11 + 0xbb" (binary_expression "local_d0 + local_a0 * 0x11" identifier + (binary_expression "local_a0 * 0x11" identifier * number_literal)) + number_literal)) )) ;) (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" { (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (do_statement "do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);" do (compound_statement "{\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                }" { (if_statement "if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" if (parenthesized_expression "((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0)" ( (binary_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40)" ( (binary_expression "*(byte *)(local_b8[0xe] + 0x25) & 0x40" (pointer_expression "*(byte *)(local_b8[0xe] + 0x25)" * (cast_expression "(byte *)(local_b8[0xe] + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[0xe] + 0x25)" ( (binary_expression "local_b8[0xe] + 0x25" (subscript_expression "local_b8[0xe]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" { (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" identifier = (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8 + 9)" ( (binary_expression "local_b8 + 9" identifier + number_literal) ))))) ;) (expression_statement "piVar17 = (int *)piVar10[2];" (assignment_expression "piVar17 = (int *)piVar10[2]" identifier = (cast_expression "(int *)piVar10[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = FUN_000497a0(0,0);" (assignment_expression "iVar12 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" identifier = (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (expression_statement "piVar34 = (int *)local_d0[0x18];" (assignment_expression "piVar34 = (int *)local_d0[0x18]" identifier = (cast_expression "(int *)local_d0[0x18]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_d0[0x18]" identifier [ number_literal ]))) ;) (expression_statement "piVar23 = (int *)local_b8[0xe];" (assignment_expression "piVar23 = (int *)local_b8[0xe]" identifier = (cast_expression "(int *)local_b8[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b8[0xe]" identifier [ number_literal ]))) ;) (expression_statement "piVar32 = piVar34 + local_d0[0x16] * 0xc;" (assignment_expression "piVar32 = piVar34 + local_d0[0x16] * 0xc" identifier = (binary_expression "piVar34 + local_d0[0x16] * 0xc" identifier + (binary_expression "local_d0[0x16] * 0xc" (subscript_expression "local_d0[0x16]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (if_statement "if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" if (parenthesized_expression "(piVar34 < piVar32)" ( (binary_expression "piVar34 < piVar32" identifier < identifier) )) (compound_statement "{\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }" { (expression_statement "bVar39 = false;" (assignment_expression "bVar39 = false" identifier = false) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (do_statement "do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);" do (compound_statement "{\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      }" { (while_statement "while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" { (if_statement "if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" if (parenthesized_expression "(((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0))" ( (binary_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)" (parenthesized_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0))" ( (binary_expression "(piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)" (parenthesized_expression "(piVar23[1] == 0 && *piVar23 == 0)" ( (binary_expression "piVar23[1] == 0 && *piVar23 == 0" (binary_expression "piVar23[1] == 0" (subscript_expression "piVar23[1]" identifier [ number_literal ]) == number_literal) && (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal)) )) && (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" ( (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" ( (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" * (cast_expression "(byte *)((int)piVar34 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(byte *)(*piVar34 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(*piVar34 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar34 + 4) & 1)" ( (binary_expression "*(byte *)(*piVar34 + 4) & 1" (pointer_expression "*(byte *)(*piVar34 + 4)" * (cast_expression "(byte *)(*piVar34 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar34 + 4)" ( (binary_expression "*piVar34 + 4" (pointer_expression "*piVar34" * identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" { (expression_statement "local_28 = '\x03';" (assignment_expression "local_28 = '\x03'" identifier = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "local_3c[1] = unaff_EDI + -0x70cb7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x70cb7" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x70cb7" identifier + number_literal)) ;) (expression_statement "local_24 = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_24 = piVar30[uVar11 * 0x11 + 0xc]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" identifier [ (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x82347" identifier + number_literal)) ;) (expression_statement "FUN_0002e610(*piVar34);" (call_expression "FUN_0002e610(*piVar34)" identifier (argument_list "(*piVar34)" ( (pointer_expression "*piVar34" * identifier) ))) ;) (if_statement "if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" if (parenthesized_expression "(local_28 != '\0')" ( (binary_expression "local_28 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" { (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "local_74 = FUN_0003a550();" (assignment_expression "local_74 = FUN_0003a550()" identifier = (call_expression "FUN_0003a550()" identifier (argument_list "()" ( )))) ;) })) })) (expression_statement "iVar38 = FUN_00030fa0(uVar40);" (assignment_expression "iVar38 = FUN_00030fa0(uVar40)" identifier = (call_expression "FUN_00030fa0(uVar40)" identifier (argument_list "(uVar40)" ( identifier )))) ;) (if_statement "if (iVar38 != 0) break;" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;" statement_identifier : (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" identifier = (binary_expression "piVar34 + 0xc" identifier + number_literal)) ;)) (if_statement "if (piVar32 <= piVar34) goto LAB_000a0663;" if (parenthesized_expression "(piVar32 <= piVar34)" ( (binary_expression "piVar32 <= piVar34" identifier <= identifier) )) (goto_statement "goto LAB_000a0663;" goto statement_identifier ;)) })) (expression_statement "uVar13 = piVar34[7];" (assignment_expression "uVar13 = piVar34[7]" identifier = (subscript_expression "piVar34[7]" identifier [ number_literal ])) ;) (expression_statement "local_d8 = 0x80000000;" (assignment_expression "local_d8 = 0x80000000" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (if_statement "if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" if (parenthesized_expression "((int)uVar13 < 0x40)" ( (binary_expression "(int)uVar13 < 0x40" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" { (expression_statement "bVar8 = (byte)uVar13 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar13 & 0x1f" identifier = (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar31 = 1 << ((byte)uVar13 & 0x1f);" (assignment_expression "uVar31 = 1 << ((byte)uVar13 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar13 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar13 & 0x1f)" ( (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar43 = uVar31;" (assignment_expression "uVar43 = uVar31" identifier = identifier) ;) (expression_statement "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8" identifier = (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar8" number_literal >> (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" if (parenthesized_expression "((uVar13 & 0x20) != 0)" ( (binary_expression "(uVar13 & 0x20) != 0" (parenthesized_expression "(uVar13 & 0x20)" ( (binary_expression "uVar13 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" { (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = uVar31;" (assignment_expression "local_d8 = uVar31" identifier = identifier) ;) })) })) (if_statement "if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" if (parenthesized_expression "(!bVar39)" ( (unary_expression "!bVar39" ! identifier) )) (compound_statement "{\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" { (expression_statement "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));" (call_expression "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" identifier (argument_list "(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" ( number_literal , (binary_expression "unaff_EDI + 0x59c3e" identifier + number_literal) , (pointer_expression "*puVar22" * identifier) , (pointer_expression "*(undefined4 *)(uVar13 * 0x10 + puVar22[1])" * (cast_expression "(undefined4 *)(uVar13 * 0x10 + puVar22[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 * 0x10 + puVar22[1])" ( (binary_expression "uVar13 * 0x10 + puVar22[1]" (binary_expression "uVar13 * 0x10" identifier * number_literal) + (subscript_expression "puVar22[1]" identifier [ number_literal ])) )))) ))) ;) })) (if_statement "if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" if (parenthesized_expression "((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0)" ( (binary_expression "(local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0" (binary_expression "(local_a8 & local_d8) == 0" (parenthesized_expression "(local_a8 & local_d8)" ( (binary_expression "local_a8 & local_d8" identifier & identifier) )) == number_literal) && (binary_expression "(uVar43 & uVar25) == 0" (parenthesized_expression "(uVar43 & uVar25)" ( (binary_expression "uVar43 & uVar25" identifier & identifier) )) == number_literal)) )) (compound_statement "{\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" { (if_statement "if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" if (parenthesized_expression "((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0))" ( (binary_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)" (parenthesized_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb))" ( (binary_expression "local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)" (binary_expression "local_c0 + 1" identifier + number_literal) <= (binary_expression "(int)(uint)*(ushort *)(piVar23 + 0xb)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(piVar23 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 0xb)" ( (binary_expression "piVar23 + 0xb" identifier + number_literal) ))))) )) || (parenthesized_expression "(iVar38 = FUN_00031110(), iVar38 == 0)" ( (comma_expression "iVar38 = FUN_00031110(), iVar38 == 0" (assignment_expression "iVar38 = FUN_00031110()" identifier = (call_expression "FUN_00031110()" identifier (argument_list "()" ( )))) , (binary_expression "iVar38 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" { (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" identifier = true) ;) (expression_statement "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;" (assignment_expression "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34" (pointer_expression "*(int **)(piVar23[0xc] + local_c0 * 4)" * (cast_expression "(int **)(piVar23[0xc] + local_c0 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar23[0xc] + local_c0 * 4)" ( (binary_expression "piVar23[0xc] + local_c0 * 4" (subscript_expression "piVar23[0xc]" identifier [ number_literal ]) + (binary_expression "local_c0 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "local_a8 = local_a8 | local_d8;" (assignment_expression "local_a8 = local_a8 | local_d8" identifier = (binary_expression "local_a8 | local_d8" identifier | identifier)) ;) (expression_statement "uVar25 = uVar25 | uVar43;" (assignment_expression "uVar25 = uVar25 | uVar43" identifier = (binary_expression "uVar25 | uVar43" identifier | identifier)) ;) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_000a05b6;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a0ba5;" goto statement_identifier ;) })) (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" identifier = true) ;) (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" identifier = (binary_expression "piVar34 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar34 < piVar32)" ( (binary_expression "piVar34 < piVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0663:\n                      uVar25 = ~uVar25;" statement_identifier : (expression_statement "uVar25 = ~uVar25;" (assignment_expression "uVar25 = ~uVar25" identifier = (unary_expression "~uVar25" ~ identifier)) ;)) (expression_statement "uVar13 = ~local_a8 | 0x80000000;" (assignment_expression "uVar13 = ~local_a8 | 0x80000000" identifier = (binary_expression "~local_a8 | 0x80000000" (unary_expression "~local_a8" ~ identifier) | number_literal)) ;) }) (else_clause "else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" else (compound_statement "{\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" { (expression_statement "uVar25 = 0xffffffff;" (assignment_expression "uVar25 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar13 = 0xffffffff;" (assignment_expression "uVar13 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c0._0_2_ = 0;" (assignment_expression "local_c0._0_2_ = 0" (field_expression "local_c0._0_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) }))) (expression_statement "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 10)" * (cast_expression "(undefined2 *)(piVar23 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 10)" ( (binary_expression "piVar23 + 10" identifier + number_literal) )))) = (cast_expression "(undefined2)local_c0" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 6)" * (cast_expression "(undefined2 *)(piVar23 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 6)" ( (binary_expression "piVar23 + 6" identifier + number_literal) )))) = (cast_expression "(undefined2)local_c0" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "piVar23[9] = 0x4241;" (assignment_expression "piVar23[9] = 0x4241" (subscript_expression "piVar23[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar43 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar43 = piVar30[uVar11 * 0x11 + 0xf]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" identifier [ (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];" (assignment_expression "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10]" identifier = (binary_expression "uVar13 & piVar30[uVar11 * 0x11 + 0x10]" identifier & (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (expression_statement "sVar2 = *(short *)((int)puVar22 + 0x2a);" (assignment_expression "sVar2 = *(short *)((int)puVar22 + 0x2a)" identifier = (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar31 = 0x3f;" (assignment_expression "uVar31 = 0x3f" identifier = number_literal) ;) (if_statement "if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }" if (parenthesized_expression "(sVar2 < 0x40)" ( (binary_expression "sVar2 < 0x40" identifier < number_literal) )) (compound_statement "{\n                      uVar31 = (int)sVar2;\n                    }" { (expression_statement "uVar31 = (int)sVar2;" (assignment_expression "uVar31 = (int)sVar2" identifier = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" if (parenthesized_expression "(0 < sVar2)" ( (binary_expression "0 < sVar2" number_literal < identifier) )) (compound_statement "{\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);" do (compound_statement "{\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      }" { (expression_statement "bVar8 = (byte)uVar26 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar26 & 0x1f" identifier = (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" ( (binary_expression "uVar25 & uVar43" identifier & identifier) )) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" if (parenthesized_expression "((uVar26 & 0x20) != 0)" ( (binary_expression "(uVar26 & 0x20) != 0" (parenthesized_expression "(uVar26 & 0x20)" ( (binary_expression "uVar26 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" { (expression_statement "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar13 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);" (assignment_expression "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0)" identifier = (binary_expression "(local_c0 + 1) - (uint)((uVar27 & 1) == 0)" (parenthesized_expression "(local_c0 + 1)" ( (binary_expression "local_c0 + 1" identifier + number_literal) )) - (call_expression "(uint)((uVar27 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar27 & 1) == 0)" ( (binary_expression "(uVar27 & 1) == 0" (parenthesized_expression "(uVar27 & 1)" ( (binary_expression "uVar27 & 1" identifier & number_literal) )) == number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar31 != uVar26)" ( (binary_expression "uVar31 != uVar26" identifier != identifier) )) ;) })) (if_statement "if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" if (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" ( (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) < number_literal) )) (compound_statement "{\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" { (expression_statement "local_c0 = local_c0 + -0x3f + (int)sVar2;" (assignment_expression "local_c0 = local_c0 + -0x3f + (int)sVar2" identifier = (binary_expression "local_c0 + -0x3f + (int)sVar2" (binary_expression "local_c0 + -0x3f" identifier + number_literal) + (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "piVar34 = (int *)FUN_00028510(local_3c);" (assignment_expression "piVar34 = (int *)FUN_00028510(local_3c)" identifier = (cast_expression "(int *)FUN_00028510(local_3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028510(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (if_statement "if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" if (parenthesized_expression "(piVar34 != (int *)0x0)" ( (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" { (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "piVar23[8] = (int)piVar34;" (assignment_expression "piVar23[8] = (int)piVar34" (subscript_expression "piVar23[8]" identifier [ number_literal ]) = (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar34 = unaff_EDI + 0x59c58;" (assignment_expression "*piVar34 = unaff_EDI + 0x59c58" (pointer_expression "*piVar34" * identifier) = (binary_expression "unaff_EDI + 0x59c58" identifier + number_literal)) ;) (expression_statement "piVar34[3] = (int)puVar22;" (assignment_expression "piVar34[3] = (int)puVar22" (subscript_expression "piVar34[3]" identifier [ number_literal ]) = (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar35 = (int *)local_d0[0x18];" (assignment_expression "piVar35 = (int *)local_d0[0x18]" identifier = (cast_expression "(int *)local_d0[0x18]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_d0[0x18]" identifier [ number_literal ]))) ;) (if_statement "if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }" if (parenthesized_expression "(piVar35 < piVar32)" ( (binary_expression "piVar35 < piVar32" identifier < identifier) )) (compound_statement "{\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }" { (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (do_statement "do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);" do (compound_statement "{\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        }" { (while_statement "while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" { (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" identifier = (binary_expression "iVar38 * 2" identifier * number_literal)) ;) (expression_statement "iVar14 = FUN_00030fa0(uVar40);" (assignment_expression "iVar14 = FUN_00030fa0(uVar40)" identifier = (call_expression "FUN_00030fa0(uVar40)" identifier (argument_list "(uVar40)" ( identifier )))) ;) (if_statement "if (iVar14 != 0) break;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;" statement_identifier : (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" identifier = (binary_expression "piVar35 + 0xc" identifier + number_literal)) ;)) (if_statement "if (piVar32 <= piVar35) goto LAB_000a0858;" if (parenthesized_expression "(piVar32 <= piVar35)" ( (binary_expression "piVar32 <= piVar35" identifier <= identifier) )) (goto_statement "goto LAB_000a0858;" goto statement_identifier ;)) })) (expression_statement "uVar27 = piVar35[7];" (assignment_expression "uVar27 = piVar35[7]" identifier = (subscript_expression "piVar35[7]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar33 = 0x80000000;" (assignment_expression "uVar33 = 0x80000000" identifier = number_literal) ;) (if_statement "if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" if (parenthesized_expression "((int)uVar27 < 0x40)" ( (binary_expression "(int)uVar27 < 0x40" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" { (expression_statement "bVar39 = (uVar27 & 0x20) == 0;" (assignment_expression "bVar39 = (uVar27 & 0x20) == 0" identifier = (binary_expression "(uVar27 & 0x20) == 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uint)!bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)!bVar39" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar39" ! 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 "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uint)bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)bVar39" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;" if (parenthesized_expression "((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0)" ( (binary_expression "(local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0" (binary_expression "(local_78 & uVar33) != 0" (parenthesized_expression "(local_78 & uVar33)" ( (binary_expression "local_78 & uVar33" identifier & identifier) )) != number_literal) || (binary_expression "(uVar26 & uVar18) != 0" (parenthesized_expression "(uVar26 & uVar18)" ( (binary_expression "uVar26 & uVar18" identifier & identifier) )) != number_literal)) )) (goto_statement "goto LAB_000a07a0;" goto statement_identifier ;)) (expression_statement "uVar26 = uVar26 | uVar18;" (assignment_expression "uVar26 = uVar26 | uVar18" identifier = (binary_expression "uVar26 | uVar18" identifier | identifier)) ;) (expression_statement "local_70 = (undefined2)uVar27;" (assignment_expression "local_70 = (undefined2)uVar27" identifier = (cast_expression "(undefined2)uVar27" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 | uVar33;" (assignment_expression "local_78 = local_78 | uVar33" identifier = (binary_expression "local_78 | uVar33" identifier | identifier)) ;) (expression_statement "*(undefined2 *)(piVar34[1] + iVar16) = local_70;" (assignment_expression "*(undefined2 *)(piVar34[1] + iVar16) = local_70" (pointer_expression "*(undefined2 *)(piVar34[1] + iVar16)" * (cast_expression "(undefined2 *)(piVar34[1] + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar34[1] + iVar16)" ( (binary_expression "piVar34[1] + iVar16" (subscript_expression "piVar34[1]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (expression_statement "puVar19 = (undefined4 *)FUN_0005dbf0();" (assignment_expression "puVar19 = (undefined4 *)FUN_0005dbf0()" identifier = (cast_expression "(undefined4 *)FUN_0005dbf0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005dbf0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar20 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" ( (binary_expression "puVar19 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            puVar20 = (undefined *)*puVar19;\n                          }" { (expression_statement "puVar20 = (undefined *)*puVar19;" (assignment_expression "puVar20 = (undefined *)*puVar19" identifier = (cast_expression "(undefined *)*puVar19" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) })) (expression_statement "iVar16 = iVar16 + 2;" (assignment_expression "iVar16 = iVar16 + 2" identifier = (binary_expression "iVar16 + 2" identifier + number_literal)) ;) (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" identifier = (binary_expression "piVar35 + 0xc" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar35 < piVar32)" ( (binary_expression "piVar35 < piVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0858:\n                        uVar26 = iVar38 * 4;" statement_identifier : (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;)) }) (else_clause "else {\n                        iVar16 = 0;\n                      }" else (compound_statement "{\n                        iVar16 = 0;\n                      }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) }))) (expression_statement "local_84 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "local_84 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) (if_statement "if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" if (parenthesized_expression "(sVar2 < 1)" ( (binary_expression "sVar2 < 1" identifier < number_literal) )) (compound_statement "{\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }" { (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar16)" ( (binary_expression "iVar14 + iVar16" identifier + identifier) )))) ;) }) (else_clause "else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" else (compound_statement "{\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);" do (compound_statement "{\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        }" { (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;) (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" identifier = (binary_expression "iVar38 * 2" identifier * number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar16)" ( (binary_expression "iVar14 + iVar16" identifier + identifier) )))) ;) (expression_statement "bVar8 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" ( (binary_expression "uVar25 & uVar43" identifier & identifier) )) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((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                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }" { (expression_statement "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar13 >> ((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) )))) ;) })) (if_statement "if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" if (parenthesized_expression "((uVar18 & 1) != 0)" ( (binary_expression "(uVar18 & 1) != 0" (parenthesized_expression "(uVar18 & 1)" ( (binary_expression "uVar18 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" { (expression_statement "*puVar36 = (short)uVar27;" (assignment_expression "*puVar36 = (short)uVar27" (pointer_expression "*puVar36" * identifier) = (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar26 = uVar26 + 4;" (assignment_expression "uVar26 = uVar26 + 4" identifier = (binary_expression "uVar26 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + 2 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 2 + iVar16)" ( (binary_expression "iVar14 + 2 + iVar16" (binary_expression "iVar14 + 2" identifier + number_literal) + identifier) )))) ;) })) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar31 != uVar27)" ( (binary_expression "uVar31 != uVar27" identifier != identifier) )) ;) }))) (if_statement "if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" if (parenthesized_expression "((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a)))" ( (binary_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))" (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" ( (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) < number_literal) )) && (parenthesized_expression "(0x3f < *(short *)((int)puVar22 + 0x2a))" ( (binary_expression "0x3f < *(short *)((int)puVar22 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" { (expression_statement "iVar16 = 0x3f;" (assignment_expression "iVar16 = 0x3f" identifier = number_literal) ;) (while_statement "while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" { (expression_statement "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16;" (assignment_expression "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16" (pointer_expression "*(short *)(iVar14 + iVar38 * 2)" * (cast_expression "(short *)(iVar14 + iVar38 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar38 * 2)" ( (binary_expression "iVar14 + iVar38 * 2" identifier + (binary_expression "iVar38 * 2" identifier * number_literal)) )))) = (cast_expression "(short)iVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;" if (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar16)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar16" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) })) (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);" (assignment_expression "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2)" identifier = (cast_expression "(undefined2 *)(piVar34[1] + iVar38 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar34[1] + iVar38 * 2)" ( (binary_expression "piVar34[1] + iVar38 * 2" (subscript_expression "piVar34[1]" identifier [ number_literal ]) + (binary_expression "iVar38 * 2" identifier * number_literal)) )))) ;) })) (expression_statement "*puVar36 = 0xffff;" (assignment_expression "*puVar36 = 0xffff" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (expression_statement "*(undefined **)(piVar34[8] + uVar26) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + uVar26) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + uVar26)" * (cast_expression "(undefined **)(piVar34[8] + uVar26)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + uVar26)" ( (binary_expression "piVar34[8] + uVar26" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (expression_statement "iVar16 = piVar10[10];" (assignment_expression "iVar16 = piVar10[10]" identifier = (subscript_expression "piVar10[10]" identifier [ number_literal ])) ;) (expression_statement "piVar10[10] = iVar16 + 1;" (assignment_expression "piVar10[10] = iVar16 + 1" (subscript_expression "piVar10[10]" identifier [ number_literal ]) = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_b8[2] = iVar16;" (assignment_expression "local_b8[2] = iVar16" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000497a0(local_c0 + 1,0);" (call_expression "FUN_000497a0(local_c0 + 1,0)" identifier (argument_list "(local_c0 + 1,0)" ( (binary_expression "local_c0 + 1" identifier + number_literal) , number_literal ))) ;) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" identifier = (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8 + 9)" ( (binary_expression "local_b8 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(local_d0[0x13] + 4);" (assignment_expression "iVar16 = *(int *)(local_d0[0x13] + 4)" identifier = (pointer_expression "*(int *)(local_d0[0x13] + 4)" * (cast_expression "(int *)(local_d0[0x13] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0x13] + 4)" ( (binary_expression "local_d0[0x13] + 4" (subscript_expression "local_d0[0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar14 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar14 = uVar11 * 0x44 + iVar16" identifier = (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" identifier * number_literal) + identifier)) ;) (if_statement "if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" if (parenthesized_expression "((*(byte *)(iVar14 + 0x2d) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar14 + 0x2d) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar14 + 0x2d) & 0x10)" ( (binary_expression "*(byte *)(iVar14 + 0x2d) & 0x10" (pointer_expression "*(byte *)(iVar14 + 0x2d)" * (cast_expression "(byte *)(iVar14 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2d)" ( (binary_expression "iVar14 + 0x2d" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }" { (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "local_b4 = (int *)0x0;" (assignment_expression "local_b4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" else (compound_statement "{\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" { (expression_statement "local_b4 = (int *)FUN_000497a0(0,0);" (assignment_expression "local_b4 = (int *)FUN_000497a0(0,0)" identifier = (cast_expression "(int *)FUN_000497a0(0,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))))) ;) (expression_statement "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));" (call_expression "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20))" identifier (argument_list "(0,*(undefined4 *)(iVar14 + 0x20))" ( number_literal , (pointer_expression "*(undefined4 *)(iVar14 + 0x20)" * (cast_expression "(undefined4 *)(iVar14 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) }))) (if_statement "if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" { (expression_statement "iVar28 = piVar10[0xe];" (assignment_expression "iVar28 = piVar10[0xe]" identifier = (subscript_expression "piVar10[0xe]" identifier [ number_literal ])) ;) (expression_statement "iVar37 = iVar28 + -1;" (assignment_expression "iVar37 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar37;" (assignment_expression "piVar10[0xe] = iVar37" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);" (call_expression "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28)" identifier (argument_list "(piVar10,local_74,iVar37,0x10,iVar28)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar23[9] = piVar23[9] | 0x20000;" (assignment_expression "piVar23[9] = piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" identifier [ number_literal ]) = (binary_expression "piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" identifier [ number_literal ]) | number_literal)) ;) })) (if_statement "if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" if (parenthesized_expression "(*(char *)((int)piVar10 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)piVar10 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar10 + 0x13)" * (cast_expression "(char *)((int)piVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }" { (expression_statement "iVar28 = piVar10[0xb] + 1;" (assignment_expression "iVar28 = piVar10[0xb] + 1" identifier = (binary_expression "piVar10[0xb] + 1" (subscript_expression "piVar10[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xb] = iVar28;" (assignment_expression "piVar10[0xb] = iVar28" (subscript_expression "piVar10[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" else (compound_statement "{\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" { (expression_statement "bVar8 = *(char *)((int)piVar10 + 0x13) - 1;" (assignment_expression "bVar8 = *(char *)((int)piVar10 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)piVar10 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar10 + 0x13)" * (cast_expression "(char *)((int)piVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar8;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar8" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar28 = piVar10[bVar8 + 0x24];" (assignment_expression "iVar28 = piVar10[bVar8 + 0x24]" identifier = (subscript_expression "piVar10[bVar8 + 0x24]" identifier [ (binary_expression "bVar8 + 0x24" identifier + number_literal) ])) ;) }))) (expression_statement "iVar37 = FUN_0009c790(iVar28,0,0,0,0);" (assignment_expression "iVar37 = FUN_0009c790(iVar28,0,0,0,0)" identifier = (call_expression "FUN_0009c790(iVar28,0,0,0,0)" identifier (argument_list "(iVar28,0,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "FUN_000497a0(iVar28,0);" (call_expression "FUN_000497a0(iVar28,0)" identifier (argument_list "(iVar28,0)" ( identifier , number_literal ))) ;) (if_statement "if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" if (parenthesized_expression "(0 < piVar17[0x1a])" ( (binary_expression "0 < piVar17[0x1a]" number_literal < (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" { (expression_statement "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" ( (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12" (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_74 != 0) {\n                        FUN_00049570();\n                      }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                        FUN_00049570();\n                      }" { (expression_statement "FUN_00049570();" (call_expression "FUN_00049570()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" if (parenthesized_expression "((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10)" ( (binary_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10" (pointer_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" * (cast_expression "(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2d + uVar11 * 0x44)" ( (binary_expression "iVar16 + 0x2d + uVar11 * 0x44" (binary_expression "iVar16 + 0x2d" identifier + number_literal) + (binary_expression "uVar11 * 0x44" identifier * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        FUN_000497a0(iVar14 + 1,0);\n                      }" { (expression_statement "FUN_000497a0(iVar14 + 1,0);" (call_expression "FUN_000497a0(iVar14 + 1,0)" identifier (argument_list "(iVar14 + 1,0)" ( (binary_expression "iVar14 + 1" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" else (compound_statement "{\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" { (if_statement "if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" if (parenthesized_expression "((int)local_b4 < 0)" ( (binary_expression "(int)local_b4 < 0" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" { (expression_statement "local_b4 = (int *)(piVar17[0x1a] + -1);" (assignment_expression "local_b4 = (int *)(piVar17[0x1a] + -1)" identifier = (cast_expression "(int *)(piVar17[0x1a] + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x1a] + -1)" ( (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + (int)local_b4 * 0x14)" ( (binary_expression "piVar17[0x19] + (int)local_b4 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "(int)local_b4 * 0x14" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = iVar37 + iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar37 + iVar38" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = (binary_expression "iVar37 + iVar38" identifier + identifier)) ;) (expression_statement "iVar16 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar16 = uVar11 * 0x44 + iVar16" identifier = (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);" (call_expression "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" identifier (argument_list "(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" ( (subscript_expression "local_b8[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar16 + 0x28)" * (cast_expression "(undefined4 *)(iVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "FUN_000497a0(iVar14,0);" (call_expression "FUN_000497a0(iVar14,0)" identifier (argument_list "(iVar14,0)" ( identifier , number_literal ))) ;) (expression_statement "pbVar1 = (byte *)(iVar16 + 0x2d);" (assignment_expression "pbVar1 = (byte *)(iVar16 + 0x2d)" identifier = (cast_expression "(byte *)(iVar16 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2d)" ( (binary_expression "iVar16 + 0x2d" identifier + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xef;" (assignment_expression "*pbVar1 = *pbVar1 & 0xef" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xef" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) }))) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" identifier = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" if (parenthesized_expression "(0 < iVar38)" ( (binary_expression "0 < iVar38" number_literal < identifier) )) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" { (expression_statement "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3" (pointer_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14 + -0x12)" ( (binary_expression "piVar17[0x19] + iVar38 * 0x14 + -0x12" (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar38 * 0x14" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" identifier = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }" if (parenthesized_expression "(iVar14 < 0)" ( (binary_expression "iVar14 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar14 = iVar38 + -1;\n                      }" { (expression_statement "iVar14 = iVar38 + -1;" (assignment_expression "iVar14 = iVar38 + -1" identifier = (binary_expression "iVar38 + -1" identifier + number_literal)) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + iVar14 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar14 * 0x14)" ( (binary_expression "piVar17[0x19] + iVar14 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar14 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar38" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n                        FUN_0002f640();\n                      }" { (expression_statement "FUN_0002f640();" (call_expression "FUN_0002f640()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar38 = piVar17[0x1a] + -1;" (assignment_expression "iVar38 = piVar17[0x1a] + -1" identifier = (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (compound_statement "{\n                        iVar38 = iVar12;\n                      }" { (expression_statement "iVar38 = iVar12;" (assignment_expression "iVar38 = iVar12" identifier = identifier) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + iVar38 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14)" ( (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar38 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = piVar17[0x1a];" (assignment_expression "*(int *)(puVar20 + 8) = piVar17[0x1a]" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" statement_identifier : (if_statement "if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_00039fe0();\n                    }" { (expression_statement "FUN_00039fe0();" (call_expression "FUN_00039fe0()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;)) })) (expression_statement "piVar17 = (int *)piVar10[0x1d];" (assignment_expression "piVar17 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    piVar17 = piVar10;\n                  }" { (expression_statement "piVar17 = piVar10;" (assignment_expression "piVar17 = piVar10" identifier = identifier) ;) })) (if_statement "if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }" if (parenthesized_expression "(*(char *)((int)piVar17 + 0xc5) == '\x02')" ( (binary_expression "*(char *)((int)piVar17 + 0xc5) == '\x02'" (pointer_expression "*(char *)((int)piVar17 + 0xc5)" * (cast_expression "(char *)((int)piVar17 + 0xc5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0xc5)" ( (binary_expression "(int)piVar17 + 0xc5" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    FUN_00067300(uVar29);\n                  }" { (expression_statement "FUN_00067300(uVar29);" (call_expression "FUN_00067300(uVar29)" identifier (argument_list "(uVar29)" ( identifier ))) ;) })) (expression_statement "local_b8[8] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_b8[8] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_b8[8]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = local_88 + 1;" (assignment_expression "iVar12 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) (expression_statement "uVar40 = FUN_0009d860(local_88,local_b8,uVar40);" (assignment_expression "uVar40 = FUN_0009d860(local_88,local_b8,uVar40)" identifier = (call_expression "FUN_0009d860(local_88,local_b8,uVar40)" identifier (argument_list "(local_88,local_b8,uVar40)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_d0[8] = local_b8[6];" (assignment_expression "local_d0[8] = local_b8[6]" (subscript_expression "local_d0[8]" identifier [ number_literal ]) = (subscript_expression "local_b8[6]" identifier [ number_literal ])) ;) (expression_statement "local_b8 = local_b8 + 0x11;" (assignment_expression "local_b8 = local_b8 + 0x11" identifier = (binary_expression "local_b8 + 0x11" identifier + number_literal)) ;) (expression_statement "local_88 = iVar12;" (assignment_expression "local_88 = iVar12" identifier = identifier) ;) }) while (parenthesized_expression "(local_a0 != iVar12)" ( (binary_expression "local_a0 != iVar12" identifier != identifier) )) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) })))) })) }) (else_clause "else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" else (compound_statement "{\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" { (labeled_statement "LAB_000a0070:\n          iVar38 = local_4c;" statement_identifier : (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" identifier = identifier) ;)) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" identifier = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;" (assignment_expression "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" identifier = (binary_expression "iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "iVar12 + 8" identifier + number_literal) + (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_58[0] + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58[0] + 0x2e)" ( (binary_expression "(int)local_58[0] + 0x2e" (cast_expression "(int)local_58[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_58[0]" identifier [ number_literal ])) + number_literal) )))) * number_literal))) ;) (expression_statement "uVar13 = iVar12 + 8;" (assignment_expression "uVar13 = iVar12 + 8" identifier = (binary_expression "iVar12 + 8" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)*local_58[0];" (assignment_expression "iVar12 = *(int *)*local_58[0]" identifier = (pointer_expression "*(int *)*local_58[0]" * (cast_expression "(int *)*local_58[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_58[0]" * (subscript_expression "local_58[0]" identifier [ number_literal ]))))) ;) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" * (cast_expression "(undefined4 *)(local_4c + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x24)" ( (binary_expression "local_4c + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_40 = 20000;" (assignment_expression "local_40 = 20000" identifier = number_literal) ;) (expression_statement "*(int *)(local_4c + 0x30) = local_4c + 0x38;" (assignment_expression "*(int *)(local_4c + 0x30) = local_4c + 0x38" (pointer_expression "*(int *)(local_4c + 0x30)" * (cast_expression "(int *)(local_4c + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x30)" ( (binary_expression "local_4c + 0x30" identifier + number_literal) )))) = (binary_expression "local_4c + 0x38" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(local_4c + 0x28) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x28) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x28)" * (cast_expression "(undefined2 *)(local_4c + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x28)" ( (binary_expression "local_4c + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(local_4c + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(local_4c + 0x2c) = 3" (pointer_expression "*(undefined2 *)(local_4c + 0x2c)" * (cast_expression "(undefined2 *)(local_4c + 0x2c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x2c)" ( (binary_expression "local_4c + 0x2c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" if (parenthesized_expression "(uVar13 < uVar11)" ( (binary_expression "uVar13 < uVar11" identifier < identifier) )) (compound_statement "{\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (do_statement "do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);" do (compound_statement "{\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            }" { (expression_statement "*(char *)(iVar38 + 0x10) = cVar7;" (assignment_expression "*(char *)(iVar38 + 0x10) = cVar7" (pointer_expression "*(char *)(iVar38 + 0x10)" * (cast_expression "(char *)(iVar38 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40 = local_40 + 1000;" (assignment_expression "local_40 = local_40 + 1000" identifier = (binary_expression "local_40 + 1000" identifier + number_literal)) ;) (if_statement "if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" if (parenthesized_expression "(piVar17[0x7a] < 1)" ( (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n                uVar25 = 0;\n                uVar43 = 0;\n              }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) }) (else_clause "else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" else (if_statement "if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" if (parenthesized_expression "(*(int *)(uVar13 + 0x28) == piVar17[0x7b])" ( (binary_expression "*(int *)(uVar13 + 0x28) == piVar17[0x7b]" (pointer_expression "*(int *)(uVar13 + 0x28)" * (cast_expression "(int *)(uVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x28)" ( (binary_expression "uVar13 + 0x28" identifier + number_literal) )))) == (subscript_expression "piVar17[0x7b]" identifier [ number_literal ])) )) (compound_statement "{\n                uVar25 = 1;\n                uVar43 = 0;\n              }" { (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" else (compound_statement "{\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);" do (compound_statement "{\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                }" { (expression_statement "uVar31 = uVar25 + 1;" (assignment_expression "uVar31 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (if_statement "if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" if (parenthesized_expression "(uVar31 == piVar17[0x7a])" ( (binary_expression "uVar31 == piVar17[0x7a]" identifier == (subscript_expression "piVar17[0x7a]" identifier [ number_literal ])) )) (compound_statement "{\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a014b;" goto statement_identifier ;) })) (expression_statement "iVar16 = uVar25 + 0x7c;" (assignment_expression "iVar16 = uVar25 + 0x7c" identifier = (binary_expression "uVar25 + 0x7c" identifier + number_literal)) ;) (expression_statement "uVar25 = uVar31;" (assignment_expression "uVar25 = uVar31" identifier = identifier) ;) }) while (parenthesized_expression "(*(int *)(uVar13 + 0x28) != piVar17[iVar16])" ( (binary_expression "*(int *)(uVar13 + 0x28) != piVar17[iVar16]" (pointer_expression "*(int *)(uVar13 + 0x28)" * (cast_expression "(int *)(uVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x28)" ( (binary_expression "uVar13 + 0x28" identifier + number_literal) )))) != (subscript_expression "piVar17[iVar16]" identifier [ identifier ])) )) ;) (expression_statement "bVar8 = (byte)uVar31 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar31 & 0x1f" identifier = (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar26 = 1 << ((byte)uVar31 & 0x1f);" (assignment_expression "uVar26 = 1 << ((byte)uVar31 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar31 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar31 & 0x1f)" ( (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (expression_statement "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8" identifier = (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar8" number_literal >> (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" if (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = uVar26;" (assignment_expression "uVar43 = uVar26" identifier = identifier) ;) })) }))))) (labeled_statement "LAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;" statement_identifier : (expression_statement "*(uint *)(iVar38 + 8) = uVar25;" (assignment_expression "*(uint *)(iVar38 + 8) = uVar25" (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(uint *)(iVar38 + 0xc) = uVar43;" (assignment_expression "*(uint *)(iVar38 + 0xc) = uVar43" (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" if (parenthesized_expression "(*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0)" ( (binary_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0" (pointer_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38)" * (cast_expression "(int *)(*(int *)(uVar13 + 0x10) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar13 + 0x10) + 0x38)" ( (binary_expression "*(int *)(uVar13 + 0x10) + 0x38" (pointer_expression "*(int *)(uVar13 + 0x10)" * (cast_expression "(int *)(uVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x10)" ( (binary_expression "uVar13 + 0x10" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }" { (expression_statement "iVar16 = FUN_00064890();" (assignment_expression "iVar16 = FUN_00064890()" identifier = (call_expression "FUN_00064890()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" else (compound_statement "{\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" { (expression_statement "uVar25 = uVar13 + 0x44;" (assignment_expression "uVar25 = uVar13 + 0x44" identifier = (binary_expression "uVar13 + 0x44" identifier + number_literal)) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) (while_statement "while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" while (parenthesized_expression "(uVar25 < uVar11)" ( (binary_expression "uVar25 < uVar11" identifier < identifier) )) (compound_statement "{\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" { (labeled_statement "LAB_000a0d2c:\n                  uVar31 = uVar25;" statement_identifier : (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" identifier = identifier) ;)) (expression_statement "uVar25 = uVar25 + 0x44;" (assignment_expression "uVar25 = uVar25 + 0x44" identifier = (binary_expression "uVar25 + 0x44" identifier + number_literal)) ;) (if_statement "if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" if (parenthesized_expression "(local_d8 == 0 && uVar43 == 0)" ( (binary_expression "local_d8 == 0 && uVar43 == 0" (binary_expression "local_d8 == 0" identifier == number_literal) && (binary_expression "uVar43 == 0" identifier == number_literal)) )) (compound_statement "{\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" { (while_statement "while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" while (parenthesized_expression "(uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0)" ( (comma_expression "uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0" (assignment_expression "uVar25 = uVar31 + 0x44" identifier = (binary_expression "uVar31 + 0x44" identifier + number_literal)) , (binary_expression "(*(byte *)(uVar31 + 0x24) & 10) == 0" (parenthesized_expression "(*(byte *)(uVar31 + 0x24) & 10)" ( (binary_expression "*(byte *)(uVar31 + 0x24) & 10" (pointer_expression "*(byte *)(uVar31 + 0x24)" * (cast_expression "(byte *)(uVar31 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x24)" ( (binary_expression "uVar31 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" { (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" identifier = identifier) ;) (if_statement "if (uVar11 <= uVar25) goto LAB_000a0d7c;" if (parenthesized_expression "(uVar11 <= uVar25)" ( (binary_expression "uVar11 <= uVar25" identifier <= identifier) )) (goto_statement "goto LAB_000a0d7c;" goto statement_identifier ;)) })) })) (if_statement "if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" if (parenthesized_expression "(piVar17[0x7a] < 1)" ( (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" { (labeled_statement "LAB_000a0d70:\n                    if (uVar11 <= uVar25) break;" statement_identifier : (if_statement "if (uVar11 <= uVar25) break;" if (parenthesized_expression "(uVar11 <= uVar25)" ( (binary_expression "uVar11 <= uVar25" identifier <= identifier) )) (break_statement "break;" break ;))) (goto_statement "goto LAB_000a0d2c;" goto statement_identifier ;) })) (if_statement "if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" if (parenthesized_expression "(*(int *)(uVar31 + 0x28) != piVar17[0x7b])" ( (binary_expression "*(int *)(uVar31 + 0x28) != piVar17[0x7b]" (pointer_expression "*(int *)(uVar31 + 0x28)" * (cast_expression "(int *)(uVar31 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x28)" ( (binary_expression "uVar31 + 0x28" identifier + number_literal) )))) != (subscript_expression "piVar17[0x7b]" identifier [ number_literal ])) )) (compound_statement "{\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (while_statement "while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" while (parenthesized_expression "(uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27)" ( (comma_expression "uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27" (assignment_expression "uVar27 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) , (binary_expression "piVar17[0x7a] != uVar27" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) != identifier)) )) (compound_statement "{\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" { (expression_statement "iVar16 = uVar26 + 0x7c;" (assignment_expression "iVar16 = uVar26 + 0x7c" identifier = (binary_expression "uVar26 + 0x7c" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar27;" (assignment_expression "uVar26 = uVar27" identifier = identifier) ;) (if_statement "if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" if (parenthesized_expression "(*(int *)(uVar31 + 0x28) == piVar17[iVar16])" ( (binary_expression "*(int *)(uVar31 + 0x28) == piVar17[iVar16]" (pointer_expression "*(int *)(uVar31 + 0x28)" * (cast_expression "(int *)(uVar31 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x28)" ( (binary_expression "uVar31 + 0x28" identifier + number_literal) )))) == (subscript_expression "piVar17[iVar16]" identifier [ identifier ])) )) (compound_statement "{\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" { (expression_statement "uVar31 = uVar27 >> 5 & 1;" (assignment_expression "uVar31 = uVar27 >> 5 & 1" identifier = (binary_expression "uVar27 >> 5 & 1" (binary_expression "uVar27 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar26 = uVar31 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar26 = uVar31 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar31 << ((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 "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(uVar31 ^ 1)" ( (binary_expression "uVar31 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (goto_statement "goto LAB_000a0dc9;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_000a0d70;" goto statement_identifier ;) })) (expression_statement "uVar31 = 1;" (assignment_expression "uVar31 = 1" identifier = number_literal) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;" statement_identifier : (expression_statement "uVar43 = uVar43 | uVar31;" (assignment_expression "uVar43 = uVar43 | uVar31" identifier = (binary_expression "uVar43 | uVar31" identifier | identifier)) ;)) (expression_statement "local_d8 = local_d8 | uVar26;" (assignment_expression "local_d8 = local_d8 | uVar26" identifier = (binary_expression "local_d8 | uVar26" identifier | identifier)) ;) })) (labeled_statement "LAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);" statement_identifier : (expression_statement "iVar16 = FUN_0005b240(uVar43,local_d8);" (assignment_expression "iVar16 = FUN_0005b240(uVar43,local_d8)" identifier = (call_expression "FUN_0005b240(uVar43,local_d8)" identifier (argument_list "(uVar43,local_d8)" ( identifier , identifier )))) ;)) }))) (if_statement "if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" if (parenthesized_expression "((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))))" ( (binary_expression "(iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" ( (parenthesized_expression "(*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))" ( (binary_expression "*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" (binary_expression "*(char *)((int)local_58[1] + 9) == '\0'" (pointer_expression "*(char *)((int)local_58[1] + 9)" * (cast_expression "(char *)((int)local_58[1] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58[1] + 9)" ( (binary_expression "(int)local_58[1] + 9" (cast_expression "(int)local_58[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_58[1]" identifier [ number_literal ])) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" ( (comma_expression "iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0" (assignment_expression "iVar16 = FUN_000650b0(uVar43,local_d8)" identifier = (call_expression "FUN_000650b0(uVar43,local_d8)" identifier (argument_list "(uVar43,local_d8)" ( identifier , identifier )))) , (binary_expression "iVar16 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }" { (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" identifier = (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar43 >> 0x10)" ( (binary_expression "uVar43 >> 0x10" identifier >> number_literal) )))) ;) (if_statement "if (*(char *)(iVar12 + 0x4d) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar12 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x4d)" * (cast_expression "(char *)(iVar12 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x4d)" ( (binary_expression "iVar12 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" else (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" { (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" identifier = (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar43 >> 0x10)" ( (binary_expression "uVar43 >> 0x10" identifier >> number_literal) )))) ;) (if_statement "if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" if (parenthesized_expression "(iVar16 != 0x65)" ( (binary_expression "iVar16 != 0x65" identifier != number_literal) )) (compound_statement "{\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" { (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;) })) (expression_statement "FUN_00052380(0x1c,unaff_EDI + 0x66219);" (call_expression "FUN_00052380(0x1c,unaff_EDI + 0x66219)" identifier (argument_list "(0x1c,unaff_EDI + 0x66219)" ( number_literal , (binary_expression "unaff_EDI + 0x66219" identifier + number_literal) ))) ;) }))) (expression_statement "cVar7 = cVar7 + '\x01';" (assignment_expression "cVar7 = cVar7 + '\x01'" identifier = (binary_expression "cVar7 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "uVar13 = uVar13 + 0x44;" (assignment_expression "uVar13 = uVar13 + 0x44" identifier = (binary_expression "uVar13 + 0x44" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < uVar11)" ( (binary_expression "uVar13 < uVar11" identifier < identifier) )) ;) })) (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00063ca0();" (call_expression "FUN_00063ca0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" { (if_statement "if (local_d0[2] == 0) goto LAB_000a0ea8;" if (parenthesized_expression "(local_d0[2] == 0)" ( (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a0ea8;" goto statement_identifier ;)) (expression_statement "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));" (call_expression "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]))" identifier (argument_list "(CONCAT22(uVar9,(short)local_d0[0x12]))" ( (call_expression "CONCAT22(uVar9,(short)local_d0[0x12])" identifier (argument_list "(uVar9,(short)local_d0[0x12])" ( identifier , (cast_expression "(short)local_d0[0x12]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_d0[0x12]" identifier [ number_literal ])) ))) ))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0239;" goto statement_identifier ;)) })) }))) })) (labeled_statement "LAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];" statement_identifier : (expression_statement "piVar10[0x20] = local_d0[10];" (assignment_expression "piVar10[0x20] = local_d0[10]" (subscript_expression "piVar10[0x20]" identifier [ number_literal ]) = (subscript_expression "local_d0[10]" identifier [ number_literal ])) ;)) (expression_statement "FUN_0003a3b0();" (call_expression "FUN_0003a3b0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" else (if_statement "if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(local_d0 != (int *)0x0)" ( (binary_expression "local_d0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" { (expression_statement "FUN_00026590();" (call_expression "FUN_00026590()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })))) })) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" { comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_d0;" return identifier ;) (labeled_statement "LAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" statement_identifier : (expression_statement "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" (assignment_expression "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" identifier = (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" * (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" * (cast_expression "(int *)(iVar38 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 4)" ( (binary_expression "iVar38 + 4" identifier + number_literal) )))) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))))) ;)) (if_statement "if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }" { (if_statement "if (iVar16 != -1) goto LAB_000a14f9;" if (parenthesized_expression "(iVar16 != -1)" ( (binary_expression "iVar16 != -1" identifier != number_literal) )) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" else (if_statement "if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0')" ( (binary_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0'" (pointer_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" * (cast_expression "(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" ( (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc" (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4)" (binary_expression "iVar16 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(*(int *)(iVar38 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(iVar38 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 0xc) + 4)" ( (binary_expression "*(int *)(iVar38 + 0xc) + 4" (pointer_expression "*(int *)(iVar38 + 0xc)" * (cast_expression "(int *)(iVar38 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) + number_literal) ))))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" { (labeled_statement "LAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" statement_identifier : (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })))) (labeled_statement "LAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" statement_identifier : (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;)) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;" if (parenthesized_expression "((int)uVar13 <= (int)uVar11)" ( (binary_expression "(int)uVar13 <= (int)uVar11" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a132f;" goto statement_identifier ;) (labeled_statement "LAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;" statement_identifier : (if_statement "if (uVar11 == uVar13) goto LAB_000a13e1;" if (parenthesized_expression "(uVar11 == uVar13)" ( (binary_expression "uVar11 == uVar13" identifier == identifier) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;))) (labeled_statement "LAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);" statement_identifier : (expression_statement "iVar38 = *(int *)(iVar38 + 0x14);" (assignment_expression "iVar38 = *(int *)(iVar38 + 0x14)" identifier = (pointer_expression "*(int *)(iVar38 + 0x14)" * (cast_expression "(int *)(iVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar38 == 0) goto LAB_000a1530;" if (parenthesized_expression "(iVar38 == 0)" ( (binary_expression "iVar38 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a1530;" goto statement_identifier ;)) (goto_statement "goto LAB_000a12fb;" goto statement_identifier ;) })))
(translation_unit "WhereInfo *\nsqlite3WhereBegin(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,\n                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)\n\n{\n  WhereClause *pWVar1;\n  u32 *puVar2;\n  SrcList_item *pSVar3;\n  Bitmask *pBVar4;\n  u8 uVar5;\n  short sVar6;\n  int iVar7;\n  Vdbe *p;\n  sqlite3 *db;\n  Table *pTVar8;\n  sqlite3 *db_00;\n  Vdbe *p_00;\n  Vdbe *p1;\n  byte *pbVar9;\n  VTable *zP4;\n  code *pcVar10;\n  ushort uVar11;\n  u8 uVar12;\n  WhereInfo *pWVar13;\n  byte bVar14;\n  u16 uVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  Token *pToken;\n  Expr *pEVar19;\n  WhereClause *pWVar20;\n  Parse *pPVar21;\n  Parse *pPVar22;\n  int iVar23;\n  CollSeq *pCVar24;\n  int iVar25;\n  Op *pOVar26;\n  uint uVar27;\n  Index *pIVar28;\n  WhereTerm *pWVar29;\n  u32 uVar30;\n  WhereTerm *pWVar31;\n  WhereTerm *pWVar32;\n  u8 uVar33;\n  Expr *pExpr;\n  uint uVar34;\n  uint uVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  ExprList *pEVar38;\n  Table **ppTVar39;\n  ushort wctrlFlags_00;\n  SrcList *pSrc;\n  int iVar40;\n  uint uVar41;\n  byte bVar42;\n  int iVar43;\n  WhereLevel *pWVar44;\n  i16 *piVar45;\n  char *pcVar46;\n  WhereLoop *pWVar47;\n  SrcList_item *pSVar48;\n  i16 *piVar49;\n  int unaff_EDI;\n  Index *pIVar50;\n  SrcList *pSVar51;\n  Token *op;\n  int in_GS_OFFSET;\n  bool bVar52;\n  undefined8 uVar53;\n  Bitmask BVar54;\n  ulonglong uVar55;\n  Expr *pEVar56;\n  Index *dequote;\n  undefined1 in_stack_ffffff24;\n  undefined1 uVar57;\n  undefined1 in_stack_ffffff25;\n  undefined1 uVar58;\n  undefined2 in_stack_ffffff26;\n  undefined2 uVar59;\n  short sVar60;\n  Parse *in_stack_ffffff28;\n  Parse *pParse_00;\n  WhereInfo *local_d0;\n  undefined8 local_cc;\n  int local_c0;\n  uint local_bc;\n  Vdbe *local_b8;\n  Parse *local_b4;\n  uint local_a8;\n  Parse *local_a0;\n  Parse *local_88;\n  char *local_84;\n  uint local_78;\n  Expr *local_74;\n  i16 local_70;\n  WhereLoopBuilder sWLB;\n  Walker w;\n  \n  uVar53 = __x86_get_pc_thunk_di();\n  pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20);\n  pParse_00 = (Parse *)uVar53;\n  local_b4 = pParse;\n  iVar7 = *(int *)(in_GS_OFFSET + 0x14);\n  p = pParse_00->pVdbe;\n  db = pParse_00->db;\n  uVar16 = 0;\n  do {\n    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;\n    uVar16 = uVar16 + 4;\n  } while (uVar16 < 0x1c);\n  if ((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)) {\n    local_b4 = pParse;\n  }\n  sWLB.pOrderBy = (ExprList *)local_b4;\n  wctrlFlags_00 = (ushort)pWhere & 0xfeff;\n  if ((db->dbOptFlags & 0x10) == 0) {\n    wctrlFlags_00 = (ushort)pWhere;\n  }\n  local_a0 = (Parse *)pSrc->nSrc;\n  if (0x40 < (int)local_a0) {\n    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);\n    local_d0 = (WhereInfo *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar11 = wctrlFlags_00 & 0x20;\n  if ((wctrlFlags_00 & 0x20) == 0) {\n    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }\n  if (db->mallocFailed == '\0') {\n    dequote = (Index *)0x9fc7c;\n    local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));\n    if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (WhereInfo *)0x0;\nLAB_000a0bf2:\n  if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar43 = (int)pIVar50->aiColumn[uVar16];\n  if (iVar43 < 0) {\n    if (iVar43 != -1) goto LAB_000a14f9;\n  }\n  else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar18 = (uint)pIVar50->nKeyCol;\n  uVar16 = uVar16 + 1;\n  if ((int)uVar18 <= (int)uVar16) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar16 == uVar18) goto LAB_000a13e1;\nLAB_000a12f0:\n  pIVar50 = pIVar50->pNext;\n  if (pIVar50 == (Index *)0x0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}\n\n" (function_definition "WhereInfo *\nsqlite3WhereBegin(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,\n                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)\n\n{\n  WhereClause *pWVar1;\n  u32 *puVar2;\n  SrcList_item *pSVar3;\n  Bitmask *pBVar4;\n  u8 uVar5;\n  short sVar6;\n  int iVar7;\n  Vdbe *p;\n  sqlite3 *db;\n  Table *pTVar8;\n  sqlite3 *db_00;\n  Vdbe *p_00;\n  Vdbe *p1;\n  byte *pbVar9;\n  VTable *zP4;\n  code *pcVar10;\n  ushort uVar11;\n  u8 uVar12;\n  WhereInfo *pWVar13;\n  byte bVar14;\n  u16 uVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  Token *pToken;\n  Expr *pEVar19;\n  WhereClause *pWVar20;\n  Parse *pPVar21;\n  Parse *pPVar22;\n  int iVar23;\n  CollSeq *pCVar24;\n  int iVar25;\n  Op *pOVar26;\n  uint uVar27;\n  Index *pIVar28;\n  WhereTerm *pWVar29;\n  u32 uVar30;\n  WhereTerm *pWVar31;\n  WhereTerm *pWVar32;\n  u8 uVar33;\n  Expr *pExpr;\n  uint uVar34;\n  uint uVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  ExprList *pEVar38;\n  Table **ppTVar39;\n  ushort wctrlFlags_00;\n  SrcList *pSrc;\n  int iVar40;\n  uint uVar41;\n  byte bVar42;\n  int iVar43;\n  WhereLevel *pWVar44;\n  i16 *piVar45;\n  char *pcVar46;\n  WhereLoop *pWVar47;\n  SrcList_item *pSVar48;\n  i16 *piVar49;\n  int unaff_EDI;\n  Index *pIVar50;\n  SrcList *pSVar51;\n  Token *op;\n  int in_GS_OFFSET;\n  bool bVar52;\n  undefined8 uVar53;\n  Bitmask BVar54;\n  ulonglong uVar55;\n  Expr *pEVar56;\n  Index *dequote;\n  undefined1 in_stack_ffffff24;\n  undefined1 uVar57;\n  undefined1 in_stack_ffffff25;\n  undefined1 uVar58;\n  undefined2 in_stack_ffffff26;\n  undefined2 uVar59;\n  short sVar60;\n  Parse *in_stack_ffffff28;\n  Parse *pParse_00;\n  WhereInfo *local_d0;\n  undefined8 local_cc;\n  int local_c0;\n  uint local_bc;\n  Vdbe *local_b8;\n  Parse *local_b4;\n  uint local_a8;\n  Parse *local_a0;\n  Parse *local_88;\n  char *local_84;\n  uint local_78;\n  Expr *local_74;\n  i16 local_70;\n  WhereLoopBuilder sWLB;\n  Walker w;\n  \n  uVar53 = __x86_get_pc_thunk_di();\n  pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20);\n  pParse_00 = (Parse *)uVar53;\n  local_b4 = pParse;\n  iVar7 = *(int *)(in_GS_OFFSET + 0x14);\n  p = pParse_00->pVdbe;\n  db = pParse_00->db;\n  uVar16 = 0;\n  do {\n    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;\n    uVar16 = uVar16 + 4;\n  } while (uVar16 < 0x1c);\n  if ((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)) {\n    local_b4 = pParse;\n  }\n  sWLB.pOrderBy = (ExprList *)local_b4;\n  wctrlFlags_00 = (ushort)pWhere & 0xfeff;\n  if ((db->dbOptFlags & 0x10) == 0) {\n    wctrlFlags_00 = (ushort)pWhere;\n  }\n  local_a0 = (Parse *)pSrc->nSrc;\n  if (0x40 < (int)local_a0) {\n    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);\n    local_d0 = (WhereInfo *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar11 = wctrlFlags_00 & 0x20;\n  if ((wctrlFlags_00 & 0x20) == 0) {\n    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }\n  if (db->mallocFailed == '\0') {\n    dequote = (Index *)0x9fc7c;\n    local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));\n    if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (WhereInfo *)0x0;\nLAB_000a0bf2:\n  if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar43 = (int)pIVar50->aiColumn[uVar16];\n  if (iVar43 < 0) {\n    if (iVar43 != -1) goto LAB_000a14f9;\n  }\n  else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar18 = (uint)pIVar50->nKeyCol;\n  uVar16 = uVar16 + 1;\n  if ((int)uVar18 <= (int)uVar16) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar16 == uVar18) goto LAB_000a13e1;\nLAB_000a12f0:\n  pIVar50 = pIVar50->pNext;\n  if (pIVar50 == (Index *)0x0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" type_identifier (pointer_declarator "*\nsqlite3WhereBegin(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,\n                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)" * (function_declarator "sqlite3WhereBegin(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,\n                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)" identifier (parameter_list "(Parse *pParse,SrcList *pTabList,Expr *pWhere,ExprList *pOrderBy,\n                 ExprList *pResultSet,u16 wctrlFlags,int iAuxArg)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "SrcList *pTabList" type_identifier (pointer_declarator "*pTabList" * identifier)) , (parameter_declaration "Expr *pWhere" type_identifier (pointer_declarator "*pWhere" * identifier)) , (parameter_declaration "ExprList *pOrderBy" type_identifier (pointer_declarator "*pOrderBy" * identifier)) , (parameter_declaration "ExprList *pResultSet" type_identifier (pointer_declarator "*pResultSet" * identifier)) , (parameter_declaration "u16 wctrlFlags" type_identifier identifier) , (parameter_declaration "int iAuxArg" primitive_type identifier) )))) (compound_statement "{\n  WhereClause *pWVar1;\n  u32 *puVar2;\n  SrcList_item *pSVar3;\n  Bitmask *pBVar4;\n  u8 uVar5;\n  short sVar6;\n  int iVar7;\n  Vdbe *p;\n  sqlite3 *db;\n  Table *pTVar8;\n  sqlite3 *db_00;\n  Vdbe *p_00;\n  Vdbe *p1;\n  byte *pbVar9;\n  VTable *zP4;\n  code *pcVar10;\n  ushort uVar11;\n  u8 uVar12;\n  WhereInfo *pWVar13;\n  byte bVar14;\n  u16 uVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  Token *pToken;\n  Expr *pEVar19;\n  WhereClause *pWVar20;\n  Parse *pPVar21;\n  Parse *pPVar22;\n  int iVar23;\n  CollSeq *pCVar24;\n  int iVar25;\n  Op *pOVar26;\n  uint uVar27;\n  Index *pIVar28;\n  WhereTerm *pWVar29;\n  u32 uVar30;\n  WhereTerm *pWVar31;\n  WhereTerm *pWVar32;\n  u8 uVar33;\n  Expr *pExpr;\n  uint uVar34;\n  uint uVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  ExprList *pEVar38;\n  Table **ppTVar39;\n  ushort wctrlFlags_00;\n  SrcList *pSrc;\n  int iVar40;\n  uint uVar41;\n  byte bVar42;\n  int iVar43;\n  WhereLevel *pWVar44;\n  i16 *piVar45;\n  char *pcVar46;\n  WhereLoop *pWVar47;\n  SrcList_item *pSVar48;\n  i16 *piVar49;\n  int unaff_EDI;\n  Index *pIVar50;\n  SrcList *pSVar51;\n  Token *op;\n  int in_GS_OFFSET;\n  bool bVar52;\n  undefined8 uVar53;\n  Bitmask BVar54;\n  ulonglong uVar55;\n  Expr *pEVar56;\n  Index *dequote;\n  undefined1 in_stack_ffffff24;\n  undefined1 uVar57;\n  undefined1 in_stack_ffffff25;\n  undefined1 uVar58;\n  undefined2 in_stack_ffffff26;\n  undefined2 uVar59;\n  short sVar60;\n  Parse *in_stack_ffffff28;\n  Parse *pParse_00;\n  WhereInfo *local_d0;\n  undefined8 local_cc;\n  int local_c0;\n  uint local_bc;\n  Vdbe *local_b8;\n  Parse *local_b4;\n  uint local_a8;\n  Parse *local_a0;\n  Parse *local_88;\n  char *local_84;\n  uint local_78;\n  Expr *local_74;\n  i16 local_70;\n  WhereLoopBuilder sWLB;\n  Walker w;\n  \n  uVar53 = __x86_get_pc_thunk_di();\n  pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20);\n  pParse_00 = (Parse *)uVar53;\n  local_b4 = pParse;\n  iVar7 = *(int *)(in_GS_OFFSET + 0x14);\n  p = pParse_00->pVdbe;\n  db = pParse_00->db;\n  uVar16 = 0;\n  do {\n    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;\n    uVar16 = uVar16 + 4;\n  } while (uVar16 < 0x1c);\n  if ((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)) {\n    local_b4 = pParse;\n  }\n  sWLB.pOrderBy = (ExprList *)local_b4;\n  wctrlFlags_00 = (ushort)pWhere & 0xfeff;\n  if ((db->dbOptFlags & 0x10) == 0) {\n    wctrlFlags_00 = (ushort)pWhere;\n  }\n  local_a0 = (Parse *)pSrc->nSrc;\n  if (0x40 < (int)local_a0) {\n    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);\n    local_d0 = (WhereInfo *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar11 = wctrlFlags_00 & 0x20;\n  if ((wctrlFlags_00 & 0x20) == 0) {\n    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }\n  if (db->mallocFailed == '\0') {\n    dequote = (Index *)0x9fc7c;\n    local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));\n    if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (WhereInfo *)0x0;\nLAB_000a0bf2:\n  if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar43 = (int)pIVar50->aiColumn[uVar16];\n  if (iVar43 < 0) {\n    if (iVar43 != -1) goto LAB_000a14f9;\n  }\n  else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar18 = (uint)pIVar50->nKeyCol;\n  uVar16 = uVar16 + 1;\n  if ((int)uVar18 <= (int)uVar16) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar16 == uVar18) goto LAB_000a13e1;\nLAB_000a12f0:\n  pIVar50 = pIVar50->pNext;\n  if (pIVar50 == (Index *)0x0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" { (declaration "WhereClause *pWVar1;" type_identifier (pointer_declarator "*pWVar1" * identifier) ;) (declaration "u32 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "SrcList_item *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "Bitmask *pBVar4;" type_identifier (pointer_declarator "*pBVar4" * identifier) ;) (declaration "u8 uVar5;" type_identifier identifier ;) (declaration "short sVar6;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "Vdbe *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "Table *pTVar8;" type_identifier (pointer_declarator "*pTVar8" * identifier) ;) (declaration "sqlite3 *db_00;" type_identifier (pointer_declarator "*db_00" * identifier) ;) (declaration "Vdbe *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "Vdbe *p1;" type_identifier (pointer_declarator "*p1" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "VTable *zP4;" type_identifier (pointer_declarator "*zP4" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ushort uVar11;" type_identifier identifier ;) (declaration "u8 uVar12;" type_identifier identifier ;) (declaration "WhereInfo *pWVar13;" type_identifier (pointer_declarator "*pWVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "u16 uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "Token *pToken;" type_identifier (pointer_declarator "*pToken" * identifier) ;) (declaration "Expr *pEVar19;" type_identifier (pointer_declarator "*pEVar19" * identifier) ;) (declaration "WhereClause *pWVar20;" type_identifier (pointer_declarator "*pWVar20" * identifier) ;) (declaration "Parse *pPVar21;" type_identifier (pointer_declarator "*pPVar21" * identifier) ;) (declaration "Parse *pPVar22;" type_identifier (pointer_declarator "*pPVar22" * identifier) ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "CollSeq *pCVar24;" type_identifier (pointer_declarator "*pCVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "Op *pOVar26;" type_identifier (pointer_declarator "*pOVar26" * identifier) ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "Index *pIVar28;" type_identifier (pointer_declarator "*pIVar28" * identifier) ;) (declaration "WhereTerm *pWVar29;" type_identifier (pointer_declarator "*pWVar29" * identifier) ;) (declaration "u32 uVar30;" type_identifier identifier ;) (declaration "WhereTerm *pWVar31;" type_identifier (pointer_declarator "*pWVar31" * identifier) ;) (declaration "WhereTerm *pWVar32;" type_identifier (pointer_declarator "*pWVar32" * identifier) ;) (declaration "u8 uVar33;" type_identifier identifier ;) (declaration "Expr *pExpr;" type_identifier (pointer_declarator "*pExpr" * identifier) ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "uint uVar35;" type_identifier identifier ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "ExprList *pEVar38;" type_identifier (pointer_declarator "*pEVar38" * identifier) ;) (declaration "Table **ppTVar39;" type_identifier (pointer_declarator "**ppTVar39" * (pointer_declarator "*ppTVar39" * identifier)) ;) (declaration "ushort wctrlFlags_00;" type_identifier identifier ;) (declaration "SrcList *pSrc;" type_identifier (pointer_declarator "*pSrc" * identifier) ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "uint uVar41;" type_identifier identifier ;) (declaration "byte bVar42;" type_identifier identifier ;) (declaration "int iVar43;" primitive_type identifier ;) (declaration "WhereLevel *pWVar44;" type_identifier (pointer_declarator "*pWVar44" * identifier) ;) (declaration "i16 *piVar45;" type_identifier (pointer_declarator "*piVar45" * identifier) ;) (declaration "char *pcVar46;" primitive_type (pointer_declarator "*pcVar46" * identifier) ;) (declaration "WhereLoop *pWVar47;" type_identifier (pointer_declarator "*pWVar47" * identifier) ;) (declaration "SrcList_item *pSVar48;" type_identifier (pointer_declarator "*pSVar48" * identifier) ;) (declaration "i16 *piVar49;" type_identifier (pointer_declarator "*piVar49" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Index *pIVar50;" type_identifier (pointer_declarator "*pIVar50" * identifier) ;) (declaration "SrcList *pSVar51;" type_identifier (pointer_declarator "*pSVar51" * identifier) ;) (declaration "Token *op;" type_identifier (pointer_declarator "*op" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar52;" primitive_type identifier ;) (declaration "undefined8 uVar53;" type_identifier identifier ;) (declaration "Bitmask BVar54;" type_identifier identifier ;) (declaration "ulonglong uVar55;" type_identifier identifier ;) (declaration "Expr *pEVar56;" type_identifier (pointer_declarator "*pEVar56" * identifier) ;) (declaration "Index *dequote;" type_identifier (pointer_declarator "*dequote" * identifier) ;) (declaration "undefined1 in_stack_ffffff24;" type_identifier identifier ;) (declaration "undefined1 uVar57;" type_identifier identifier ;) (declaration "undefined1 in_stack_ffffff25;" type_identifier identifier ;) (declaration "undefined1 uVar58;" type_identifier identifier ;) (declaration "undefined2 in_stack_ffffff26;" type_identifier identifier ;) (declaration "undefined2 uVar59;" type_identifier identifier ;) (declaration "short sVar60;" (sized_type_specifier "short" short) identifier ;) (declaration "Parse *in_stack_ffffff28;" type_identifier (pointer_declarator "*in_stack_ffffff28" * identifier) ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "WhereInfo *local_d0;" type_identifier (pointer_declarator "*local_d0" * identifier) ;) (declaration "undefined8 local_cc;" type_identifier identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "Vdbe *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "Parse *local_b4;" type_identifier (pointer_declarator "*local_b4" * identifier) ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "Parse *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "Parse *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "char *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "Expr *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "i16 local_70;" type_identifier identifier ;) (declaration "WhereLoopBuilder sWLB;" type_identifier identifier ;) (declaration "Walker w;" type_identifier identifier ;) (expression_statement "uVar53 = __x86_get_pc_thunk_di();" (assignment_expression "uVar53 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20);" (assignment_expression "pSrc = (SrcList *)((ulonglong)uVar53 >> 0x20)" identifier = (cast_expression "(SrcList *)((ulonglong)uVar53 >> 0x20)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar53 >> 0x20)" ( (binary_expression "(ulonglong)uVar53 >> 0x20" (cast_expression "(ulonglong)uVar53" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pParse_00 = (Parse *)uVar53;" (assignment_expression "pParse_00 = (Parse *)uVar53" identifier = (cast_expression "(Parse *)uVar53" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_b4 = pParse;" (assignment_expression "local_b4 = pParse" identifier = identifier) ;) (expression_statement "iVar7 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar7 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "p = pParse_00->pVdbe;" (assignment_expression "p = pParse_00->pVdbe" identifier = (field_expression "pParse_00->pVdbe" identifier -> field_identifier)) ;) (expression_statement "db = pParse_00->db;" (assignment_expression "db = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;\n    uVar16 = uVar16 + 4;\n  } while (uVar16 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;\n    uVar16 = uVar16 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0;" (assignment_expression "*(undefined4 *)((int)&sWLB.pWInfo + uVar16) = 0" (pointer_expression "*(undefined4 *)((int)&sWLB.pWInfo + uVar16)" * (cast_expression "(undefined4 *)((int)&sWLB.pWInfo + uVar16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&sWLB.pWInfo + uVar16)" ( (binary_expression "(int)&sWLB.pWInfo + uVar16" (cast_expression "(int)&sWLB.pWInfo" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sWLB.pWInfo" & (field_expression "sWLB.pWInfo" identifier . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar16 = uVar16 + 4;" (assignment_expression "uVar16 = uVar16 + 4" identifier = (binary_expression "uVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 < 0x1c)" ( (binary_expression "uVar16 < 0x1c" identifier < number_literal) )) ;) (if_statement "if ((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)) {\n    local_b4 = pParse;\n  }" if (parenthesized_expression "((pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40))" ( (binary_expression "(pParse != (Parse *)0x0) && (local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)" (parenthesized_expression "(pParse != (Parse *)0x0)" ( (binary_expression "pParse != (Parse *)0x0" identifier != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_b4 = (Parse *)0x0, (int)pParse->db < 0x40)" ( (comma_expression "local_b4 = (Parse *)0x0, (int)pParse->db < 0x40" (assignment_expression "local_b4 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "(int)pParse->db < 0x40" (cast_expression "(int)pParse->db" ( (type_descriptor "int" primitive_type) ) (field_expression "pParse->db" identifier -> field_identifier)) < number_literal)) ))) )) (compound_statement "{\n    local_b4 = pParse;\n  }" { (expression_statement "local_b4 = pParse;" (assignment_expression "local_b4 = pParse" identifier = identifier) ;) })) (expression_statement "sWLB.pOrderBy = (ExprList *)local_b4;" (assignment_expression "sWLB.pOrderBy = (ExprList *)local_b4" (field_expression "sWLB.pOrderBy" identifier . field_identifier) = (cast_expression "(ExprList *)local_b4" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "wctrlFlags_00 = (ushort)pWhere & 0xfeff;" (assignment_expression "wctrlFlags_00 = (ushort)pWhere & 0xfeff" identifier = (binary_expression "(ushort)pWhere & 0xfeff" (cast_expression "(ushort)pWhere" ( (type_descriptor "ushort" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if ((db->dbOptFlags & 0x10) == 0) {\n    wctrlFlags_00 = (ushort)pWhere;\n  }" if (parenthesized_expression "((db->dbOptFlags & 0x10) == 0)" ( (binary_expression "(db->dbOptFlags & 0x10) == 0" (parenthesized_expression "(db->dbOptFlags & 0x10)" ( (binary_expression "db->dbOptFlags & 0x10" (field_expression "db->dbOptFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    wctrlFlags_00 = (ushort)pWhere;\n  }" { (expression_statement "wctrlFlags_00 = (ushort)pWhere;" (assignment_expression "wctrlFlags_00 = (ushort)pWhere" identifier = (cast_expression "(ushort)pWhere" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) })) (expression_statement "local_a0 = (Parse *)pSrc->nSrc;" (assignment_expression "local_a0 = (Parse *)pSrc->nSrc" identifier = (cast_expression "(Parse *)pSrc->nSrc" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pSrc->nSrc" identifier -> field_identifier))) ;) (if_statement "if (0x40 < (int)local_a0) {\n    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);\n    local_d0 = (WhereInfo *)0x0;\n    goto LAB_000a0bf2;\n  }" if (parenthesized_expression "(0x40 < (int)local_a0)" ( (binary_expression "0x40 < (int)local_a0" number_literal < (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);\n    local_d0 = (WhereInfo *)0x0;\n    goto LAB_000a0bf2;\n  }" { (expression_statement "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40);" (call_expression "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40)" identifier (argument_list "(pParse_00,(char *)(unaff_EDI + 0x59c10),0x40)" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x59c10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x59c10)" ( (binary_expression "unaff_EDI + 0x59c10" identifier + number_literal) ))) , number_literal ))) ;) (expression_statement "local_d0 = (WhereInfo *)0x0;" (assignment_expression "local_d0 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) (expression_statement "uVar11 = wctrlFlags_00 & 0x20;" (assignment_expression "uVar11 = wctrlFlags_00 & 0x20" identifier = (binary_expression "wctrlFlags_00 & 0x20" identifier & number_literal)) ;) (if_statement "if ((wctrlFlags_00 & 0x20) == 0) {\n    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }" if (parenthesized_expression "((wctrlFlags_00 & 0x20) == 0)" ( (binary_expression "(wctrlFlags_00 & 0x20) == 0" (parenthesized_expression "(wctrlFlags_00 & 0x20)" ( (binary_expression "wctrlFlags_00 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;\n  }" { (expression_statement "uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;" (assignment_expression "uVar16 = (int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8" identifier = (binary_expression "(int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8" (binary_expression "(int)((int)&local_a0[-1].pRename + 3) * 0x44 + 0x337U" (binary_expression "(int)((int)&local_a0[-1].pRename + 3) * 0x44" (cast_expression "(int)((int)&local_a0[-1].pRename + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&local_a0[-1].pRename + 3)" ( (binary_expression "(int)&local_a0[-1].pRename + 3" (cast_expression "(int)&local_a0[-1].pRename" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_a0[-1].pRename" & (field_expression "local_a0[-1].pRename" (subscript_expression "local_a0[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) ))) * number_literal) + number_literal) & number_literal)) ;) }) (else_clause "else {\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }" else (compound_statement "{\n    uVar16 = 0x330;\n    local_a0 = (Parse *)0x1;\n  }" { (expression_statement "uVar16 = 0x330;" (assignment_expression "uVar16 = 0x330" identifier = number_literal) ;) (expression_statement "local_a0 = (Parse *)0x1;" (assignment_expression "local_a0 = (Parse *)0x1" identifier = (cast_expression "(Parse *)0x1" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (if_statement "if (db->mallocFailed == '\0') {\n    dequote = (Index *)0x9fc7c;\n    local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));\n    if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dequote = (Index *)0x9fc7c;\n    local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));\n    if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" { (expression_statement "dequote = (Index *)0x9fc7c;" (assignment_expression "dequote = (Index *)0x9fc7c" identifier = (cast_expression "(Index *)0x9fc7c" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ));" (assignment_expression "local_d0 = (WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ))" identifier = (cast_expression "(WhereInfo *)\n               dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ))" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "dbMallocRawFinish(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ))" identifier (argument_list "(db,CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            ))" ( identifier , (call_expression "CONCAT44(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            )" identifier (argument_list "(in_stack_ffffff28,\n                                             CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))\n                                            )" ( identifier , (call_expression "CONCAT22(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))" identifier (argument_list "(in_stack_ffffff26,\n                                                      CONCAT11(in_stack_ffffff25,in_stack_ffffff24))" ( identifier , (call_expression "CONCAT11(in_stack_ffffff25,in_stack_ffffff24)" identifier (argument_list "(in_stack_ffffff25,in_stack_ffffff24)" ( identifier , identifier ))) ))) ))) ))))) ;) (if_statement "if (db->mallocFailed == '\0') {\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }\n    else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_d0->pTabList = pSrc;\n      local_d0->pParse = pParse_00;\n      local_d0->pOrderBy = (ExprList *)local_b4;\n      local_d0->pResultSet = (ExprList *)pTabList;\n      local_d0->pWhere = pExpr;\n      local_d0->aiCurOnePass[1] = -1;\n      local_d0->aiCurOnePass[0] = -1;\n      local_d0->nLevel = (u8)local_a0;\n      iVar17 = pParse_00->nLabel + -1;\n      pParse_00->nLabel = iVar17;\n      local_d0->iContinue = iVar17;\n      local_d0->iBreak = iVar17;\n      local_d0->wctrlFlags = wctrlFlags_00;\n      local_d0->iLimit = (LogEst)pOrderBy;\n      local_d0->savedNQueryLoop = pParse_00->nQueryLoop;\n      local_d0->nOBSat = '\0';\n      local_d0->sorted = '\0';\n      local_d0->eOnePass = '\0';\n      local_d0->untestedTerms = '\0';\n      uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;\n      *(undefined4 *)&local_d0->nRowOut = 0;\n      uVar18 = 0;\n      do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));\n      local_b8 = (Vdbe *)local_d0->a;\n      pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));\n      pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);\n      pEVar56 = (Expr *)0x0;\n      memset(local_b8,0,(size_t)pToken);\n      pWVar1 = &local_d0->sWC;\n      pWVar47->aLTerm = pWVar47->aLTermSpace;\n      pWVar47->nLTerm = 0;\n      pWVar47->nLSlot = 3;\n      pWVar47->wsFlags = 0;\n      (local_d0->sWC).a = (local_d0->sWC).aStatic;\n      (local_d0->sMaskSet).n = 0;\n      (local_d0->sWC).pWInfo = local_d0;\n      (local_d0->sWC).hasOr = '\0';\n      (local_d0->sWC).pOuter = (WhereClause *)0x0;\n      (local_d0->sWC).nTerm = 0;\n      (local_d0->sWC).nSlot = 8;\n      sWLB.pWInfo = local_d0;\n      sWLB.pWC = pWVar1;\n      sWLB.pNew = pWVar47;\n      sqlite3WhereSplit(pWVar1,pExpr,',');\n      if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }\n      iVar17 = (local_d0->sWC).nTerm;\n      uVar57 = (undefined1)((uint)iVar17 >> 8);\n      uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n      iVar17 = iVar17 + -1;\n      if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }\n      if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;\n      whereInfoFree(db,local_d0);\n    }" { (expression_statement "local_d0->pTabList = pSrc;" (assignment_expression "local_d0->pTabList = pSrc" (field_expression "local_d0->pTabList" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->pParse = pParse_00;" (assignment_expression "local_d0->pParse = pParse_00" (field_expression "local_d0->pParse" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->pOrderBy = (ExprList *)local_b4;" (assignment_expression "local_d0->pOrderBy = (ExprList *)local_b4" (field_expression "local_d0->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)local_b4" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_d0->pResultSet = (ExprList *)pTabList;" (assignment_expression "local_d0->pResultSet = (ExprList *)pTabList" (field_expression "local_d0->pResultSet" identifier -> field_identifier) = (cast_expression "(ExprList *)pTabList" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_d0->pWhere = pExpr;" (assignment_expression "local_d0->pWhere = pExpr" (field_expression "local_d0->pWhere" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->aiCurOnePass[1] = -1;" (assignment_expression "local_d0->aiCurOnePass[1] = -1" (subscript_expression "local_d0->aiCurOnePass[1]" (field_expression "local_d0->aiCurOnePass" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "local_d0->aiCurOnePass[0] = -1;" (assignment_expression "local_d0->aiCurOnePass[0] = -1" (subscript_expression "local_d0->aiCurOnePass[0]" (field_expression "local_d0->aiCurOnePass" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "local_d0->nLevel = (u8)local_a0;" (assignment_expression "local_d0->nLevel = (u8)local_a0" (field_expression "local_d0->nLevel" identifier -> field_identifier) = (cast_expression "(u8)local_a0" ( (type_descriptor "u8" type_identifier) ) identifier)) ;) (expression_statement "iVar17 = pParse_00->nLabel + -1;" (assignment_expression "iVar17 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse_00->nLabel = iVar17;" (assignment_expression "pParse_00->nLabel = iVar17" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->iContinue = iVar17;" (assignment_expression "local_d0->iContinue = iVar17" (field_expression "local_d0->iContinue" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->iBreak = iVar17;" (assignment_expression "local_d0->iBreak = iVar17" (field_expression "local_d0->iBreak" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->wctrlFlags = wctrlFlags_00;" (assignment_expression "local_d0->wctrlFlags = wctrlFlags_00" (field_expression "local_d0->wctrlFlags" identifier -> field_identifier) = identifier) ;) (expression_statement "local_d0->iLimit = (LogEst)pOrderBy;" (assignment_expression "local_d0->iLimit = (LogEst)pOrderBy" (field_expression "local_d0->iLimit" identifier -> field_identifier) = (cast_expression "(LogEst)pOrderBy" ( (type_descriptor "LogEst" type_identifier) ) identifier)) ;) (expression_statement "local_d0->savedNQueryLoop = pParse_00->nQueryLoop;" (assignment_expression "local_d0->savedNQueryLoop = pParse_00->nQueryLoop" (field_expression "local_d0->savedNQueryLoop" identifier -> field_identifier) = (field_expression "pParse_00->nQueryLoop" identifier -> field_identifier)) ;) (expression_statement "local_d0->nOBSat = '\0';" (assignment_expression "local_d0->nOBSat = '\0'" (field_expression "local_d0->nOBSat" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_d0->sorted = '\0';" (assignment_expression "local_d0->sorted = '\0'" (field_expression "local_d0->sorted" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_d0->eOnePass = '\0';" (assignment_expression "local_d0->eOnePass = '\0'" (field_expression "local_d0->eOnePass" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_d0->untestedTerms = '\0';" (assignment_expression "local_d0->untestedTerms = '\0'" (field_expression "local_d0->untestedTerms" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc;" (assignment_expression "uVar34 = (uint)&local_d0->eDistinct & 0xfffffffc" identifier = (binary_expression "(uint)&local_d0->eDistinct & 0xfffffffc" (binary_expression "(uint)&local_d0->eDistinct" (parenthesized_expression "(uint)" ( identifier )) & (field_expression "local_d0->eDistinct" identifier -> field_identifier)) & number_literal)) ;) (expression_statement "*(undefined4 *)&local_d0->nRowOut = 0;" (assignment_expression "*(undefined4 *)&local_d0->nRowOut = 0" (pointer_expression "*(undefined4 *)&local_d0->nRowOut" * (cast_expression "(undefined4 *)&local_d0->nRowOut" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_d0->nRowOut" & (field_expression "local_d0->nRowOut" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      } while (uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc));" do (compound_statement "{\n        *(undefined4 *)(uVar34 + uVar18) = 0;\n        uVar18 = uVar18 + 4;\n      }" { (expression_statement "*(undefined4 *)(uVar34 + uVar18) = 0;" (assignment_expression "*(undefined4 *)(uVar34 + uVar18) = 0" (pointer_expression "*(undefined4 *)(uVar34 + uVar18)" * (cast_expression "(undefined4 *)(uVar34 + uVar18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar34 + uVar18)" ( (binary_expression "uVar34 + uVar18" identifier + identifier) )))) = number_literal) ;) (expression_statement "uVar18 = uVar18 + 4;" (assignment_expression "uVar18 = uVar18 + 4" identifier = (binary_expression "uVar18 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc))" ( (binary_expression "uVar18 < ((int)local_d0 + (0x4c - uVar34) & 0xfffffffc)" identifier < (parenthesized_expression "((int)local_d0 + (0x4c - uVar34) & 0xfffffffc)" ( (binary_expression "(int)local_d0 + (0x4c - uVar34) & 0xfffffffc" (binary_expression "(int)local_d0 + (0x4c - uVar34)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x4c - uVar34)" ( (binary_expression "0x4c - uVar34" number_literal - identifier) ))) & number_literal) ))) )) ;) (expression_statement "local_b8 = (Vdbe *)local_d0->a;" (assignment_expression "local_b8 = (Vdbe *)local_d0->a" identifier = (cast_expression "(Vdbe *)local_d0->a" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_d0->a" identifier -> field_identifier))) ;) (expression_statement "pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18));" (assignment_expression "pWVar47 = (WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18))" identifier = (cast_expression "(WhereLoop *)((int)local_d0->aiCurOnePass + (uVar16 - 0x18))" ( (type_descriptor "WhereLoop *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0->aiCurOnePass + (uVar16 - 0x18))" ( (binary_expression "(int)local_d0->aiCurOnePass + (uVar16 - 0x18)" (cast_expression "(int)local_d0->aiCurOnePass" ( (type_descriptor "int" primitive_type) ) (field_expression "local_d0->aiCurOnePass" identifier -> field_identifier)) + (parenthesized_expression "(uVar16 - 0x18)" ( (binary_expression "uVar16 - 0x18" identifier - number_literal) ))) )))) ;) (expression_statement "pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44);" (assignment_expression "pToken = (Token *)((int)((int)&local_a0->db + 1) * 0x44)" identifier = (cast_expression "(Token *)((int)((int)&local_a0->db + 1) * 0x44)" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)&local_a0->db + 1) * 0x44)" ( (binary_expression "(int)((int)&local_a0->db + 1) * 0x44" (cast_expression "(int)((int)&local_a0->db + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&local_a0->db + 1)" ( (binary_expression "(int)&local_a0->db + 1" (cast_expression "(int)&local_a0->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_a0->db" & (field_expression "local_a0->db" identifier -> field_identifier))) + number_literal) ))) * number_literal) )))) ;) (expression_statement "pEVar56 = (Expr *)0x0;" (assignment_expression "pEVar56 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "memset(local_b8,0,(size_t)pToken);" (call_expression "memset(local_b8,0,(size_t)pToken)" identifier (argument_list "(local_b8,0,(size_t)pToken)" ( identifier , number_literal , (cast_expression "(size_t)pToken" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "pWVar1 = &local_d0->sWC;" (assignment_expression "pWVar1 = &local_d0->sWC" identifier = (pointer_expression "&local_d0->sWC" & (field_expression "local_d0->sWC" identifier -> field_identifier))) ;) (expression_statement "pWVar47->aLTerm = pWVar47->aLTermSpace;" (assignment_expression "pWVar47->aLTerm = pWVar47->aLTermSpace" (field_expression "pWVar47->aLTerm" identifier -> field_identifier) = (field_expression "pWVar47->aLTermSpace" identifier -> field_identifier)) ;) (expression_statement "pWVar47->nLTerm = 0;" (assignment_expression "pWVar47->nLTerm = 0" (field_expression "pWVar47->nLTerm" identifier -> field_identifier) = number_literal) ;) (expression_statement "pWVar47->nLSlot = 3;" (assignment_expression "pWVar47->nLSlot = 3" (field_expression "pWVar47->nLSlot" identifier -> field_identifier) = number_literal) ;) (expression_statement "pWVar47->wsFlags = 0;" (assignment_expression "pWVar47->wsFlags = 0" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = number_literal) ;) (expression_statement "(local_d0->sWC).a = (local_d0->sWC).aStatic;" (assignment_expression "(local_d0->sWC).a = (local_d0->sWC).aStatic" (field_expression "(local_d0->sWC).a" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = (field_expression "(local_d0->sWC).aStatic" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(local_d0->sMaskSet).n = 0;" (assignment_expression "(local_d0->sMaskSet).n = 0" (field_expression "(local_d0->sMaskSet).n" (parenthesized_expression "(local_d0->sMaskSet)" ( (field_expression "local_d0->sMaskSet" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(local_d0->sWC).pWInfo = local_d0;" (assignment_expression "(local_d0->sWC).pWInfo = local_d0" (field_expression "(local_d0->sWC).pWInfo" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(local_d0->sWC).hasOr = '\0';" (assignment_expression "(local_d0->sWC).hasOr = '\0'" (field_expression "(local_d0->sWC).hasOr" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(local_d0->sWC).pOuter = (WhereClause *)0x0;" (assignment_expression "(local_d0->sWC).pOuter = (WhereClause *)0x0" (field_expression "(local_d0->sWC).pOuter" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(WhereClause *)0x0" ( (type_descriptor "WhereClause *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(local_d0->sWC).nTerm = 0;" (assignment_expression "(local_d0->sWC).nTerm = 0" (field_expression "(local_d0->sWC).nTerm" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(local_d0->sWC).nSlot = 8;" (assignment_expression "(local_d0->sWC).nSlot = 8" (field_expression "(local_d0->sWC).nSlot" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "sWLB.pWInfo = local_d0;" (assignment_expression "sWLB.pWInfo = local_d0" (field_expression "sWLB.pWInfo" identifier . field_identifier) = identifier) ;) (expression_statement "sWLB.pWC = pWVar1;" (assignment_expression "sWLB.pWC = pWVar1" (field_expression "sWLB.pWC" identifier . field_identifier) = identifier) ;) (expression_statement "sWLB.pNew = pWVar47;" (assignment_expression "sWLB.pNew = pWVar47" (field_expression "sWLB.pNew" identifier . field_identifier) = identifier) ;) (expression_statement "sqlite3WhereSplit(pWVar1,pExpr,',');" (call_expression "sqlite3WhereSplit(pWVar1,pExpr,',')" identifier (argument_list "(pWVar1,pExpr,',')" ( identifier , identifier , (char_literal "','" ' character ') ))) ;) (if_statement "if (local_a0 == (Parse *)0x0) {\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }\n      else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }" if (parenthesized_expression "(local_a0 == (Parse *)0x0)" ( (binary_expression "local_a0 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }\n        pToken = (Token *)(unaff_EDI + 0x59c2c);\n        sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);\n      }" { (if_statement "if (local_b4 != (Parse *)0x0) {\n          local_d0->nOBSat = (i8)local_b4->db;\n        }" if (parenthesized_expression "(local_b4 != (Parse *)0x0)" ( (binary_expression "local_b4 != (Parse *)0x0" identifier != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          local_d0->nOBSat = (i8)local_b4->db;\n        }" { (expression_statement "local_d0->nOBSat = (i8)local_b4->db;" (assignment_expression "local_d0->nOBSat = (i8)local_b4->db" (field_expression "local_d0->nOBSat" identifier -> field_identifier) = (cast_expression "(i8)local_b4->db" ( (type_descriptor "i8" type_identifier) ) (field_expression "local_b4->db" identifier -> field_identifier))) ;) })) (if_statement "if ((wctrlFlags_00 & 0x100) != 0) {\n          local_d0->eDistinct = '\x01';\n        }" if (parenthesized_expression "((wctrlFlags_00 & 0x100) != 0)" ( (binary_expression "(wctrlFlags_00 & 0x100) != 0" (parenthesized_expression "(wctrlFlags_00 & 0x100)" ( (binary_expression "wctrlFlags_00 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          local_d0->eDistinct = '\x01';\n        }" { (expression_statement "local_d0->eDistinct = '\x01';" (assignment_expression "local_d0->eDistinct = '\x01'" (field_expression "local_d0->eDistinct" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (expression_statement "pToken = (Token *)(unaff_EDI + 0x59c2c);" (assignment_expression "pToken = (Token *)(unaff_EDI + 0x59c2c)" identifier = (cast_expression "(Token *)(unaff_EDI + 0x59c2c)" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x59c2c)" ( (binary_expression "unaff_EDI + 0x59c2c" identifier + number_literal) )))) ;) (expression_statement "sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken);" (call_expression "sqlite3VdbeExplain(pParse_00,'\0',(char *)pToken)" identifier (argument_list "(pParse_00,'\0',(char *)pToken)" ( identifier , (char_literal "'\0'" ' escape_sequence ') , (cast_expression "(char *)pToken" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) }) (else_clause "else {\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }" else (compound_statement "{\n        local_bc = 0;\n        ppTVar39 = &pSrc->a[0].pTab;\n        do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);\n      }" { (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "ppTVar39 = &pSrc->a[0].pTab;" (assignment_expression "ppTVar39 = &pSrc->a[0].pTab" identifier = (pointer_expression "&pSrc->a[0].pTab" & (field_expression "pSrc->a[0].pTab" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (do_statement "do {\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        } while ((int)local_bc < pSrc->nSrc);" do (compound_statement "{\n          iVar17 = (int)ppTVar39[6];\n          iVar43 = (local_d0->sMaskSet).n;\n          (local_d0->sMaskSet).n = iVar43 + 1;\n          (local_d0->sMaskSet).ix[iVar43] = iVar17;\n          if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }\n          local_bc = local_bc + 1;\n          ppTVar39 = ppTVar39 + 0x11;\n        }" { (expression_statement "iVar17 = (int)ppTVar39[6];" (assignment_expression "iVar17 = (int)ppTVar39[6]" identifier = (cast_expression "(int)ppTVar39[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "ppTVar39[6]" identifier [ number_literal ]))) ;) (expression_statement "iVar43 = (local_d0->sMaskSet).n;" (assignment_expression "iVar43 = (local_d0->sMaskSet).n" identifier = (field_expression "(local_d0->sMaskSet).n" (parenthesized_expression "(local_d0->sMaskSet)" ( (field_expression "local_d0->sMaskSet" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(local_d0->sMaskSet).n = iVar43 + 1;" (assignment_expression "(local_d0->sMaskSet).n = iVar43 + 1" (field_expression "(local_d0->sMaskSet).n" (parenthesized_expression "(local_d0->sMaskSet)" ( (field_expression "local_d0->sMaskSet" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (expression_statement "(local_d0->sMaskSet).ix[iVar43] = iVar17;" (assignment_expression "(local_d0->sMaskSet).ix[iVar43] = iVar17" (subscript_expression "(local_d0->sMaskSet).ix[iVar43]" (field_expression "(local_d0->sMaskSet).ix" (parenthesized_expression "(local_d0->sMaskSet)" ( (field_expression "local_d0->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ identifier ]) = identifier) ;) (if_statement "if ((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)) {\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }" if (parenthesized_expression "((((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr))" ( (binary_expression "(((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)) && (0 < pEVar38->nExpr)" (parenthesized_expression "(((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0))" ( (binary_expression "((pSrc->a[local_bc].fg.field_0x1 & 4) != 0) &&\n              (pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)" (parenthesized_expression "((pSrc->a[local_bc].fg.field_0x1 & 4) != 0)" ( (binary_expression "(pSrc->a[local_bc].fg.field_0x1 & 4) != 0" (parenthesized_expression "(pSrc->a[local_bc].fg.field_0x1 & 4)" ( (binary_expression "pSrc->a[local_bc].fg.field_0x1 & 4" (field_expression "pSrc->a[local_bc].fg.field_0x1" (field_expression "pSrc->a[local_bc].fg" (subscript_expression "pSrc->a[local_bc]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0)" ( (comma_expression "pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg,\n              pEVar38 != (ExprList *)0x0" (assignment_expression "pEVar38 = ((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg" identifier = (field_expression "((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))->pFuncArg" (parenthesized_expression "((anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb))" ( (cast_expression "(anon_union_4_2_996c0f8d_for_u1 *)(ppTVar39 + 0xb)" ( (type_descriptor "anon_union_4_2_996c0f8d_for_u1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppTVar39 + 0xb)" ( (binary_expression "ppTVar39 + 0xb" identifier + number_literal) ))) )) -> field_identifier)) , (binary_expression "pEVar38 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(0 < pEVar38->nExpr)" ( (binary_expression "0 < pEVar38->nExpr" number_literal < (field_expression "pEVar38->nExpr" identifier -> field_identifier)) ))) )) (compound_statement "{\n            pTVar8 = *ppTVar39;\n            iVar17 = 0;\n            pIVar50 = (Index *)0x0;\n            uVar57 = SUB41(pTVar8,0);\n            uVar58 = (undefined1)((uint)pTVar8 >> 8);\n            uVar59 = (undefined2)((uint)pTVar8 >> 0x10);\n            do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);\n          }" { (expression_statement "pTVar8 = *ppTVar39;" (assignment_expression "pTVar8 = *ppTVar39" identifier = (pointer_expression "*ppTVar39" * identifier)) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "pIVar50 = (Index *)0x0;" (assignment_expression "pIVar50 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar57 = SUB41(pTVar8,0);" (assignment_expression "uVar57 = SUB41(pTVar8,0)" identifier = (call_expression "SUB41(pTVar8,0)" identifier (argument_list "(pTVar8,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar58 = (undefined1)((uint)pTVar8 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)pTVar8 >> 8)" identifier = (call_expression "(undefined1)((uint)pTVar8 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)pTVar8 >> 8)" ( (binary_expression "(uint)pTVar8 >> 8" (cast_expression "(uint)pTVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)pTVar8 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)pTVar8 >> 0x10)" identifier = (call_expression "(undefined2)((uint)pTVar8 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)pTVar8 >> 0x10)" ( (binary_expression "(uint)pTVar8 >> 0x10" (cast_expression "(uint)pTVar8" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (do_statement "do {\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            } while ((int)pIVar50 < pEVar38->nExpr);" do (compound_statement "{\n              iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              iVar40 = (int)*(short *)(iVar43 + 0x2a);\n              if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }\n              iVar23 = iVar17;\n              while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }\n              pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);\n              if (pEVar19 == (Expr *)0x0) break;\n              iVar17 = iVar23 + 1;\n              pEVar19->iTable = (int)ppTVar39[6];\n              pEVar19->iColumn = iVar23;\n              (pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n              pEVar19 = pEVar38->a[(int)pIVar50].pExpr;\n              if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }\n              pIVar50 = (Index *)((int)&pIVar50->zName + 1);\n              pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);\n              pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);\n              whereClauseInsert(pWVar1,pEVar19,1);\n            }" { (expression_statement "iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" (assignment_expression "iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier = (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) ;) (expression_statement "iVar40 = (int)*(short *)(iVar43 + 0x2a);" (assignment_expression "iVar40 = (int)*(short *)(iVar43 + 0x2a)" identifier = (cast_expression "(int)*(short *)(iVar43 + 0x2a)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(iVar43 + 0x2a)" * (cast_expression "(short *)(iVar43 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 0x2a)" ( (binary_expression "iVar43 + 0x2a" identifier + number_literal) )))))) ;) (if_statement "if (iVar40 <= iVar17) {\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }" if (parenthesized_expression "(iVar40 <= iVar17)" ( (binary_expression "iVar40 <= iVar17" identifier <= identifier) )) (compound_statement "{\nLAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                pEVar56 = (Expr *)(unaff_EDI + 0x6623d);\n                sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));\n                dequote = pIVar50;\n                break;\n              }" { (labeled_statement "LAB_000a0e38:\n                pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" statement_identifier : (expression_statement "pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" (assignment_expression "pToken = *(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier = (pointer_expression "*(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" * (cast_expression "(Token **)CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" ( (type_descriptor "Token **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))))) ;)) (expression_statement "pEVar56 = (Expr *)(unaff_EDI + 0x6623d);" (assignment_expression "pEVar56 = (Expr *)(unaff_EDI + 0x6623d)" identifier = (cast_expression "(Expr *)(unaff_EDI + 0x6623d)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6623d)" ( (binary_expression "unaff_EDI + 0x6623d" identifier + number_literal) )))) ;) (expression_statement "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d));" (call_expression "sqlite3ErrorMsg(pParse_00,(char *)(unaff_EDI + 0x6623d))" identifier (argument_list "(pParse_00,(char *)(unaff_EDI + 0x6623d))" ( identifier , (cast_expression "(char *)(unaff_EDI + 0x6623d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x6623d)" ( (binary_expression "unaff_EDI + 0x6623d" identifier + number_literal) ))) ))) ;) (expression_statement "dequote = pIVar50;" (assignment_expression "dequote = pIVar50" identifier = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "iVar23 = iVar17;" (assignment_expression "iVar23 = iVar17" identifier = identifier) ;) (while_statement "while ((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0) {\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }" while (parenthesized_expression "((*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2)" ( (binary_expression "*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10) & 2" (pointer_expression "*(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10)" * (cast_expression "(byte *)(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10)" ( (binary_expression "*(int *)(iVar43 + 4) + 0xf + iVar23 * 0x10" (binary_expression "*(int *)(iVar43 + 4) + 0xf" (pointer_expression "*(int *)(iVar43 + 4)" * (cast_expression "(int *)(iVar43 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar43 + 4)" ( (binary_expression "iVar43 + 4" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar23 * 0x10" identifier * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar23 = iVar23 + 1;\n                if (iVar23 == iVar40) goto LAB_000a0e38;\n              }" { (expression_statement "iVar23 = iVar23 + 1;" (assignment_expression "iVar23 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) (if_statement "if (iVar23 == iVar40) goto LAB_000a0e38;" if (parenthesized_expression "(iVar23 == iVar40)" ( (binary_expression "iVar23 == iVar40" identifier == identifier) )) (goto_statement "goto LAB_000a0e38;" goto statement_identifier ;)) })) (expression_statement "pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote);" (assignment_expression "pEVar19 = sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote)" identifier = (call_expression "sqlite3ExprAlloc((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote)" identifier (argument_list "((sqlite3 *)0x0,(int)pEVar56,pToken,(int)dequote)" ( (cast_expression "(sqlite3 *)0x0" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(int)pEVar56" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , (cast_expression "(int)dequote" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (pEVar19 == (Expr *)0x0) break;" if (parenthesized_expression "(pEVar19 == (Expr *)0x0)" ( (binary_expression "pEVar19 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar17 = iVar23 + 1;" (assignment_expression "iVar17 = iVar23 + 1" identifier = (binary_expression "iVar23 + 1" identifier + number_literal)) ;) (expression_statement "pEVar19->iTable = (int)ppTVar39[6];" (assignment_expression "pEVar19->iTable = (int)ppTVar39[6]" (field_expression "pEVar19->iTable" identifier -> field_identifier) = (cast_expression "(int)ppTVar39[6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "ppTVar39[6]" identifier [ number_literal ]))) ;) (expression_statement "pEVar19->iColumn = iVar23;" (assignment_expression "pEVar19->iColumn = iVar23" (field_expression "pEVar19->iColumn" identifier -> field_identifier) = identifier) ;) (expression_statement "(pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" (assignment_expression "(pEVar19->y).sub.iAddr = CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" (field_expression "(pEVar19->y).sub.iAddr" (field_expression "(pEVar19->y).sub" (parenthesized_expression "(pEVar19->y)" ( (field_expression "pEVar19->y" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) ;) (expression_statement "pEVar19 = pEVar38->a[(int)pIVar50].pExpr;" (assignment_expression "pEVar19 = pEVar38->a[(int)pIVar50].pExpr" identifier = (field_expression "pEVar38->a[(int)pIVar50].pExpr" (subscript_expression "pEVar38->a[(int)pIVar50]" (field_expression "pEVar38->a" identifier -> field_identifier) [ (cast_expression "(int)pIVar50" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) ;) (if_statement "if (pEVar19 != (Expr *)0x0) {\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }" if (parenthesized_expression "(pEVar19 != (Expr *)0x0)" ( (binary_expression "pEVar19 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);\n              }" { (expression_statement "exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0);" (call_expression "exprDup(pParse_00->db,pEVar19,0,(u8 **)0x0)" identifier (argument_list "(pParse_00->db,pEVar19,0,(u8 **)0x0)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , identifier , number_literal , (cast_expression "(u8 **)0x0" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ))) ;) })) (expression_statement "pIVar50 = (Index *)((int)&pIVar50->zName + 1);" (assignment_expression "pIVar50 = (Index *)((int)&pIVar50->zName + 1)" identifier = (cast_expression "(Index *)((int)&pIVar50->zName + 1)" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar50->zName + 1)" ( (binary_expression "(int)&pIVar50->zName + 1" (cast_expression "(int)&pIVar50->zName" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar50->zName" & (field_expression "pIVar50->zName" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56);" (assignment_expression "pEVar19 = sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56)" identifier = (call_expression "sqlite3PExpr(pParse_00,0xa2,(Expr *)0x0,pEVar56)" identifier (argument_list "(pParse_00,0xa2,(Expr *)0x0,pEVar56)" ( identifier , number_literal , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;) (expression_statement "pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56);" (assignment_expression "pEVar19 = sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56)" identifier = (call_expression "sqlite3PExpr(pParse_00,0x35,pEVar19,pEVar56)" identifier (argument_list "(pParse_00,0x35,pEVar19,pEVar56)" ( identifier , number_literal , identifier , identifier )))) ;) (expression_statement "whereClauseInsert(pWVar1,pEVar19,1);" (call_expression "whereClauseInsert(pWVar1,pEVar19,1)" identifier (argument_list "(pWVar1,pEVar19,1)" ( identifier , identifier , number_literal ))) ;) }) while (parenthesized_expression "((int)pIVar50 < pEVar38->nExpr)" ( (binary_expression "(int)pIVar50 < pEVar38->nExpr" (cast_expression "(int)pIVar50" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "pEVar38->nExpr" identifier -> field_identifier)) )) ;) })) (expression_statement "local_bc = local_bc + 1;" (assignment_expression "local_bc = local_bc + 1" identifier = (binary_expression "local_bc + 1" identifier + number_literal)) ;) (expression_statement "ppTVar39 = ppTVar39 + 0x11;" (assignment_expression "ppTVar39 = ppTVar39 + 0x11" identifier = (binary_expression "ppTVar39 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)local_bc < pSrc->nSrc)" ( (binary_expression "(int)local_bc < pSrc->nSrc" (cast_expression "(int)local_bc" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "pSrc->nSrc" identifier -> field_identifier)) )) ;) }))) (expression_statement "iVar17 = (local_d0->sWC).nTerm;" (assignment_expression "iVar17 = (local_d0->sWC).nTerm" identifier = (field_expression "(local_d0->sWC).nTerm" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar57 = (undefined1)((uint)iVar17 >> 8);" (assignment_expression "uVar57 = (undefined1)((uint)iVar17 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar17 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar17 >> 8)" ( (binary_expression "(uint)iVar17 >> 8" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar17 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar17 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar17 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar17 >> 0x10)" ( (binary_expression "(uint)iVar17 >> 0x10" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar17 = iVar17 + -1;" (assignment_expression "iVar17 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < iVar17) {\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }" if (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);\n      }" { (do_statement "do {\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        } while (iVar43 != -1);" do (compound_statement "{\n          iVar43 = iVar17 + -1;\n          dequote = (Index *)0x9ff76;\n          exprAnalyze(pSrc,pWVar1,iVar17);\n          iVar17 = iVar43;\n        }" { (expression_statement "iVar43 = iVar17 + -1;" (assignment_expression "iVar43 = iVar17 + -1" identifier = (binary_expression "iVar17 + -1" identifier + number_literal)) ;) (expression_statement "dequote = (Index *)0x9ff76;" (assignment_expression "dequote = (Index *)0x9ff76" identifier = (cast_expression "(Index *)0x9ff76" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "exprAnalyze(pSrc,pWVar1,iVar17);" (call_expression "exprAnalyze(pSrc,pWVar1,iVar17)" identifier (argument_list "(pSrc,pWVar1,iVar17)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar17 = iVar43;" (assignment_expression "iVar17 = iVar43" identifier = identifier) ;) }) while (parenthesized_expression "(iVar43 != -1)" ( (binary_expression "iVar43 != -1" identifier != number_literal) )) ;) })) (if_statement "if (db->mallocFailed == '\0') {\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar33 = '\0';\n        if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }\n        if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }\nLAB_000a0050:\n        pWVar47 = sWLB.pNew;\n        pWVar13 = sWLB.pWInfo;\n        pSVar51 = (sWLB.pWInfo)->pTabList;\n        if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }\n      }" { (expression_statement "uVar33 = '\0';" (assignment_expression "uVar33 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (0 < (sWLB.pWC)->nTerm) {\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }" if (parenthesized_expression "(0 < (sWLB.pWC)->nTerm)" ( (binary_expression "0 < (sWLB.pWC)->nTerm" number_literal < (field_expression "(sWLB.pWC)->nTerm" (parenthesized_expression "(sWLB.pWC)" ( (field_expression "sWLB.pWC" identifier . field_identifier) )) -> field_identifier)) )) (compound_statement "{\n          iVar17 = 0;\n          pWVar20 = sWLB.pWC;\n          do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);\n        }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "pWVar20 = sWLB.pWC;" (assignment_expression "pWVar20 = sWLB.pWC" identifier = (field_expression "sWLB.pWC" identifier . field_identifier)) ;) (do_statement "do {\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          } while (iVar17 < pWVar20->nTerm);" do (compound_statement "{\n            pWVar29 = pWVar20->a + iVar17;\n            if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }\nLAB_000a0030:\n            iVar17 = iVar17 + 1;\n          }" { (expression_statement "pWVar29 = pWVar20->a + iVar17;" (assignment_expression "pWVar29 = pWVar20->a + iVar17" identifier = (binary_expression "pWVar20->a + iVar17" (field_expression "pWVar20->a" identifier -> field_identifier) + identifier)) ;) (if_statement "if (((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)) {\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }" if (parenthesized_expression "(((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0))" ( (binary_expression "((pWVar29->wtFlags & 2) == 0) &&\n               (*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)" (parenthesized_expression "((pWVar29->wtFlags & 2) == 0)" ( (binary_expression "(pWVar29->wtFlags & 2) == 0" (parenthesized_expression "(pWVar29->wtFlags & 2)" ( (binary_expression "pWVar29->wtFlags & 2" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0)" ( (binary_expression "*(int *)((int)&pWVar29->prereqAll + 4) == 0 && (int)pWVar29->prereqAll == 0" (binary_expression "*(int *)((int)&pWVar29->prereqAll + 4) == 0" (pointer_expression "*(int *)((int)&pWVar29->prereqAll + 4)" * (cast_expression "(int *)((int)&pWVar29->prereqAll + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar29->prereqAll + 4)" ( (binary_expression "(int)&pWVar29->prereqAll + 4" (cast_expression "(int)&pWVar29->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar29->prereqAll" & (field_expression "pWVar29->prereqAll" identifier -> field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)pWVar29->prereqAll == 0" (cast_expression "(int)pWVar29->prereqAll" ( (type_descriptor "int" primitive_type) ) (field_expression "pWVar29->prereqAll" identifier -> field_identifier)) == number_literal)) ))) )) (compound_statement "{\n              pEVar56 = pWVar29->pExpr;\n              if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }\n              dequote = (Index *)0x10;\n              pToken = (Token *)local_d0->iBreak;\n              sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);\n              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n              pWVar20 = sWLB.pWC;\n            }" { (expression_statement "pEVar56 = pWVar29->pExpr;" (assignment_expression "pEVar56 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) (if_statement "if (local_a0 != (Parse *)0x0) {\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }" if (parenthesized_expression "(local_a0 != (Parse *)0x0)" ( (binary_expression "local_a0 != (Parse *)0x0" identifier != (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                uVar16 = 0;\n                do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);\n                w.eCode = '\x01';\n                w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);\n                w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }\n                pEVar56 = pWVar29->pExpr;\n              }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                } while (uVar16 < 0x1c);" do (compound_statement "{\n                  *(undefined4 *)((int)&w.pParse + uVar16) = 0;\n                  uVar16 = uVar16 + 4;\n                }" { (expression_statement "*(undefined4 *)((int)&w.pParse + uVar16) = 0;" (assignment_expression "*(undefined4 *)((int)&w.pParse + uVar16) = 0" (pointer_expression "*(undefined4 *)((int)&w.pParse + uVar16)" * (cast_expression "(undefined4 *)((int)&w.pParse + uVar16)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&w.pParse + uVar16)" ( (binary_expression "(int)&w.pParse + uVar16" (cast_expression "(int)&w.pParse" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&w.pParse" & (field_expression "w.pParse" identifier . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar16 = uVar16 + 4;" (assignment_expression "uVar16 = uVar16 + 4" identifier = (binary_expression "uVar16 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 < 0x1c)" ( (binary_expression "uVar16 < 0x1c" identifier < number_literal) )) ;) (expression_statement "w.eCode = '\x01';" (assignment_expression "w.eCode = '\x01'" (field_expression "w.eCode" identifier . field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x6e6f7)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x6e6f7)" ( (binary_expression "unaff_EDI + -0x6e6f7" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x82347)" ( (binary_expression "unaff_EDI + -0x82347" identifier + number_literal) )))) ;) (if_statement "if (pEVar56 != (Expr *)0x0) {\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }" if (parenthesized_expression "(pEVar56 != (Expr *)0x0)" ( (binary_expression "pEVar56 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  dequote = (Index *)0xa0018;\n                  walkExpr(&w,pEVar56);\n                  pWVar20 = sWLB.pWC;\n                  if (w.eCode == '\0') goto LAB_000a0030;\n                }" { (expression_statement "dequote = (Index *)0xa0018;" (assignment_expression "dequote = (Index *)0xa0018" identifier = (cast_expression "(Index *)0xa0018" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "walkExpr(&w,pEVar56);" (call_expression "walkExpr(&w,pEVar56)" identifier (argument_list "(&w,pEVar56)" ( (pointer_expression "&w" & identifier) , identifier ))) ;) (expression_statement "pWVar20 = sWLB.pWC;" (assignment_expression "pWVar20 = sWLB.pWC" identifier = (field_expression "sWLB.pWC" identifier . field_identifier)) ;) (if_statement "if (w.eCode == '\0') goto LAB_000a0030;" if (parenthesized_expression "(w.eCode == '\0')" ( (binary_expression "w.eCode == '\0'" (field_expression "w.eCode" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0030;" goto statement_identifier ;)) })) (expression_statement "pEVar56 = pWVar29->pExpr;" (assignment_expression "pEVar56 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) })) (expression_statement "dequote = (Index *)0x10;" (assignment_expression "dequote = (Index *)0x10" identifier = (cast_expression "(Index *)0x10" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pToken = (Token *)local_d0->iBreak;" (assignment_expression "pToken = (Token *)local_d0->iBreak" identifier = (cast_expression "(Token *)local_d0->iBreak" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_d0->iBreak" identifier -> field_identifier))) ;) (expression_statement "sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10);" (call_expression "sqlite3ExprIfFalse(pParse_00,pEVar56,(int)pToken,0x10)" identifier (argument_list "(pParse_00,pEVar56,(int)pToken,0x10)" ( identifier , identifier , (cast_expression "(int)pToken" ( (type_descriptor "int" primitive_type) ) identifier) , number_literal ))) ;) (expression_statement "pWVar29->wtFlags = pWVar29->wtFlags | 4;" (assignment_expression "pWVar29->wtFlags = pWVar29->wtFlags | 4" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) = (binary_expression "pWVar29->wtFlags | 4" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pWVar20 = sWLB.pWC;" (assignment_expression "pWVar20 = sWLB.pWC" identifier = (field_expression "sWLB.pWC" identifier . field_identifier)) ;) })) (labeled_statement "LAB_000a0030:\n            iVar17 = iVar17 + 1;" statement_identifier : (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar17 < pWVar20->nTerm)" ( (binary_expression "iVar17 < pWVar20->nTerm" identifier < (field_expression "pWVar20->nTerm" identifier -> field_identifier)) )) ;) })) (if_statement "if ((wctrlFlags_00 & 0x100) != 0) {\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }" if (parenthesized_expression "((wctrlFlags_00 & 0x100) != 0)" ( (binary_expression "(wctrlFlags_00 & 0x100) != 0" (parenthesized_expression "(wctrlFlags_00 & 0x100)" ( (binary_expression "wctrlFlags_00 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }\n        }" { (if_statement "if (pSrc->nSrc == 1) {\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }" if (parenthesized_expression "(pSrc->nSrc == 1)" ( (binary_expression "pSrc->nSrc == 1" (field_expression "pSrc->nSrc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            iVar17 = pSrc->a[0].iCursor;\n            if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;\n            if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }\n          }" { (expression_statement "iVar17 = pSrc->a[0].iCursor;" (assignment_expression "iVar17 = pSrc->a[0].iCursor" identifier = (field_expression "pSrc->a[0].iCursor" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if (0 < pTabList->nSrc) {\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }" if (parenthesized_expression "(0 < pTabList->nSrc)" ( (binary_expression "0 < pTabList->nSrc" number_literal < (field_expression "pTabList->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n              ppTVar39 = (Table **)&pTabList->nAlloc;\n              iVar43 = 0;\nLAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;\n              do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );\n            }" { (expression_statement "ppTVar39 = (Table **)&pTabList->nAlloc;" (assignment_expression "ppTVar39 = (Table **)&pTabList->nAlloc" identifier = (cast_expression "(Table **)&pTabList->nAlloc" ( (type_descriptor "Table **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pTabList->nAlloc" & (field_expression "pTabList->nAlloc" identifier -> field_identifier)))) ;) (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a1290:\n              pcVar46 = (char *)*ppTVar39;" statement_identifier : (expression_statement "pcVar46 = (char *)*ppTVar39;" (assignment_expression "pcVar46 = (char *)*ppTVar39" identifier = (cast_expression "(char *)*ppTVar39" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppTVar39" * identifier))) ;)) (do_statement "do {\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              } while( true );" do (compound_statement "{\n                if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }\n                uVar16 = *(uint *)(pcVar46 + 4);\n                while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }\n                pcVar46 = *(char **)(pcVar46 + 0xc);\n              }" { (if_statement "if (pcVar46 == (char *)0x0) {\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }" if (parenthesized_expression "(pcVar46 == (char *)0x0)" ( (binary_expression "pcVar46 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();\n                  (*pcVar10)();\n                }" { (labeled_statement "LAB_000144c2:\n                    /* WARNING: Does not return */\n                  pcVar10 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar10 = (code *)invalidInstructionException();" (assignment_expression "pcVar10 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar16 = *(uint *)(pcVar46 + 4);" (assignment_expression "uVar16 = *(uint *)(pcVar46 + 4)" identifier = (pointer_expression "*(uint *)(pcVar46 + 4)" * (cast_expression "(uint *)(pcVar46 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar46 + 4)" ( (binary_expression "pcVar46 + 4" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar16 & 0x40000) == 0) break;\n                  pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);\n                  if (pcVar46 == (char *)0x0) goto LAB_000144c2;\n                  uVar16 = *(uint *)(pcVar46 + 4);\n                }" { (if_statement "if ((uVar16 & 0x1000) == 0) {\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" if (parenthesized_expression "((uVar16 & 0x1000) == 0)" ( (binary_expression "(uVar16 & 0x1000) == 0" (parenthesized_expression "(uVar16 & 0x1000)" ( (binary_expression "uVar16 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar43 = iVar43 + 1;\n                    ppTVar39 = ppTVar39 + 5;\n                    if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" { (if_statement "if (((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)) goto LAB_000a13e1;" if (parenthesized_expression "(((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0))" ( (binary_expression "((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))) &&\n                       (*(int *)(pcVar46 + 0x20) < 0)" (parenthesized_expression "((*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c)))" ( (binary_expression "(*pcVar46 == -0x62) && (iVar17 == *(int *)(pcVar46 + 0x1c))" (parenthesized_expression "(*pcVar46 == -0x62)" ( (binary_expression "*pcVar46 == -0x62" (pointer_expression "*pcVar46" * identifier) == number_literal) )) && (parenthesized_expression "(iVar17 == *(int *)(pcVar46 + 0x1c))" ( (binary_expression "iVar17 == *(int *)(pcVar46 + 0x1c)" identifier == (pointer_expression "*(int *)(pcVar46 + 0x1c)" * (cast_expression "(int *)(pcVar46 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar46 + 0x1c)" ( (binary_expression "pcVar46 + 0x1c" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(*(int *)(pcVar46 + 0x20) < 0)" ( (binary_expression "*(int *)(pcVar46 + 0x20) < 0" (pointer_expression "*(int *)(pcVar46 + 0x20)" * (cast_expression "(int *)(pcVar46 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar46 + 0x20)" ( (binary_expression "pcVar46 + 0x20" identifier + number_literal) )))) < number_literal) ))) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;)) (expression_statement "iVar43 = iVar43 + 1;" (assignment_expression "iVar43 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (expression_statement "ppTVar39 = ppTVar39 + 5;" (assignment_expression "ppTVar39 = ppTVar39 + 5" identifier = (binary_expression "ppTVar39 + 5" identifier + number_literal)) ;) (if_statement "if (iVar43 == pTabList->nSrc) goto LAB_000a12dd;" if (parenthesized_expression "(iVar43 == pTabList->nSrc)" ( (binary_expression "iVar43 == pTabList->nSrc" identifier == (field_expression "pTabList->nSrc" identifier -> field_identifier)) )) (goto_statement "goto LAB_000a12dd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1290;" goto statement_identifier ;) })) (if_statement "if ((uVar16 & 0x40000) == 0) break;" if (parenthesized_expression "((uVar16 & 0x40000) == 0)" ( (binary_expression "(uVar16 & 0x40000) == 0" (parenthesized_expression "(uVar16 & 0x40000)" ( (binary_expression "uVar16 & 0x40000" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4);" (assignment_expression "pcVar46 = *(char **)(*(int *)(pcVar46 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar46 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar46 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar46 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar46 + 0x14) + 4" (pointer_expression "*(int *)(pcVar46 + 0x14)" * (cast_expression "(int *)(pcVar46 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar46 + 0x14)" ( (binary_expression "pcVar46 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pcVar46 == (char *)0x0) goto LAB_000144c2;" if (parenthesized_expression "(pcVar46 == (char *)0x0)" ( (binary_expression "pcVar46 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000144c2;" goto statement_identifier ;)) (expression_statement "uVar16 = *(uint *)(pcVar46 + 4);" (assignment_expression "uVar16 = *(uint *)(pcVar46 + 4)" identifier = (pointer_expression "*(uint *)(pcVar46 + 4)" * (cast_expression "(uint *)(pcVar46 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar46 + 4)" ( (binary_expression "pcVar46 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar46 = *(char **)(pcVar46 + 0xc);" (assignment_expression "pcVar46 = *(char **)(pcVar46 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar46 + 0xc)" * (cast_expression "(char **)(pcVar46 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar46 + 0xc)" ( (binary_expression "pcVar46 + 0xc" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000a12dd:\n            pIVar50 = (pSrc->a[0].pTab)->pIndex;" statement_identifier : (expression_statement "pIVar50 = (pSrc->a[0].pTab)->pIndex;" (assignment_expression "pIVar50 = (pSrc->a[0].pTab)->pIndex" identifier = (field_expression "(pSrc->a[0].pTab)->pIndex" (parenthesized_expression "(pSrc->a[0].pTab)" ( (field_expression "pSrc->a[0].pTab" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier)) ;)) (if_statement "if (pIVar50 != (Index *)0x0) {\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }" if (parenthesized_expression "(pIVar50 != (Index *)0x0)" ( (binary_expression "pIVar50 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;\n              if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              local_d0->eDistinct = '\x01';\n              goto LAB_000a0050;\n            }" { (labeled_statement "LAB_000a12fb:\n              if (pIVar50->onError == '\0') goto LAB_000a12f0;" statement_identifier : (if_statement "if (pIVar50->onError == '\0') goto LAB_000a12f0;" if (parenthesized_expression "(pIVar50->onError == '\0')" ( (binary_expression "pIVar50->onError == '\0'" (field_expression "pIVar50->onError" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a12f0;" goto statement_identifier ;))) (if_statement "if (pIVar50->nKeyCol != 0) {\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" if (parenthesized_expression "(pIVar50->nKeyCol != 0)" ( (binary_expression "pIVar50->nKeyCol != 0" (field_expression "pIVar50->nKeyCol" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                uVar16 = 0;\nLAB_000a132f:\n                pToken = (Token *)0x2;\n                dequote = pIVar50;\n                pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);\n                if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a132f:\n                pToken = (Token *)0x2;" statement_identifier : (expression_statement "pToken = (Token *)0x2;" (assignment_expression "pToken = (Token *)0x2" identifier = (cast_expression "(Token *)0x2" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "dequote = pIVar50;" (assignment_expression "dequote = pIVar50" identifier = identifier) ;) (expression_statement "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50);" (assignment_expression "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50)" identifier = (call_expression "sqlite3WhereFindTerm(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50)" identifier (argument_list "(pWVar1,iVar17,uVar16,0xffffffffffffffff,2,pIVar50)" ( identifier , identifier , identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if (pWVar29 == (WhereTerm *)0x0) {\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" if (parenthesized_expression "(pWVar29 == (WhereTerm *)0x0)" ( (binary_expression "pWVar29 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pbVar9 = (byte *)pIVar50->azColl[uVar16];\n                  if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" { (expression_statement "pbVar9 = (byte *)pIVar50->azColl[uVar16];" (assignment_expression "pbVar9 = (byte *)pIVar50->azColl[uVar16]" identifier = (cast_expression "(byte *)pIVar50->azColl[uVar16]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pIVar50->azColl[uVar16]" (field_expression "pIVar50->azColl" identifier -> field_identifier) [ identifier ]))) ;) (if_statement "if (0 < pTabList->nSrc) {\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" if (parenthesized_expression "(0 < pTabList->nSrc)" ( (binary_expression "0 < pTabList->nSrc" number_literal < (field_expression "pTabList->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n                    iVar43 = 0;\n                    do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" { (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (do_statement "do {\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );" do (compound_statement "{\n                      pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);\n                      if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }\n                      uVar30 = pEVar56->flags;\n                      pEVar19 = pEVar56;\n                      while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }\n                      if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar43 = iVar43 + 1;\n                      if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }\n                    }" { (expression_statement "pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4);" (assignment_expression "pEVar56 = *(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4)" identifier = (pointer_expression "*(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4)" * (cast_expression "(Expr **)((int)pTabList->a + iVar43 * 0x14 + -4)" ( (type_descriptor "Expr **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pTabList->a + iVar43 * 0x14 + -4)" ( (binary_expression "(int)pTabList->a + iVar43 * 0x14 + -4" (binary_expression "(int)pTabList->a + iVar43 * 0x14" (cast_expression "(int)pTabList->a" ( (type_descriptor "int" primitive_type) ) (field_expression "pTabList->a" identifier -> field_identifier)) + (binary_expression "iVar43 * 0x14" identifier * number_literal)) + number_literal) ))))) ;) (if_statement "if (pEVar56 == (Expr *)0x0) {\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }" if (parenthesized_expression "(pEVar56 == (Expr *)0x0)" ( (binary_expression "pEVar56 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nsqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();\n                        (*pcVar10)();\n                      }" { (labeled_statement "sqlite3WhereBegin_cold_936:\n                    /* WARNING: Does not return */\n                        pcVar10 = (code *)invalidInstructionException();" statement_identifier : comment (expression_statement "pcVar10 = (code *)invalidInstructionException();" (assignment_expression "pcVar10 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar10)();" (call_expression "(*pcVar10)()" (parenthesized_expression "(*pcVar10)" ( (pointer_expression "*pcVar10" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar30 = pEVar56->flags;" (assignment_expression "uVar30 = pEVar56->flags" identifier = (field_expression "pEVar56->flags" identifier -> field_identifier)) ;) (expression_statement "pEVar19 = pEVar56;" (assignment_expression "pEVar19 = pEVar56" identifier = identifier) ;) (while_statement "while ((uVar30 & 0x1000) != 0) {\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }" while (parenthesized_expression "((uVar30 & 0x1000) != 0)" ( (binary_expression "(uVar30 & 0x1000) != 0" (parenthesized_expression "(uVar30 & 0x1000)" ( (binary_expression "uVar30 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                        if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }\n                        if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;\n                        uVar30 = pEVar19->flags;\n                      }" { (if_statement "if ((uVar30 & 0x40000) == 0) {\n                          pEVar19 = pEVar19->pLeft;\n                        }\n                        else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }" if (parenthesized_expression "((uVar30 & 0x40000) == 0)" ( (binary_expression "(uVar30 & 0x40000) == 0" (parenthesized_expression "(uVar30 & 0x40000)" ( (binary_expression "uVar30 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          pEVar19 = pEVar19->pLeft;\n                        }" { (expression_statement "pEVar19 = pEVar19->pLeft;" (assignment_expression "pEVar19 = pEVar19->pLeft" identifier = (field_expression "pEVar19->pLeft" identifier -> field_identifier)) ;) }) (else_clause "else {\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }" else (compound_statement "{\n                          pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;\n                        }" { (expression_statement "pEVar19 = ((pEVar19->x).pList)->a[0].pExpr;" (assignment_expression "pEVar19 = ((pEVar19->x).pList)->a[0].pExpr" identifier = (field_expression "((pEVar19->x).pList)->a[0].pExpr" (subscript_expression "((pEVar19->x).pList)->a[0]" (field_expression "((pEVar19->x).pList)->a" (parenthesized_expression "((pEVar19->x).pList)" ( (field_expression "(pEVar19->x).pList" (parenthesized_expression "(pEVar19->x)" ( (field_expression "pEVar19->x" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) [ number_literal ]) . field_identifier)) ;) }))) (if_statement "if (pEVar19 == (Expr *)0x0) goto sqlite3WhereBegin_cold_936;" if (parenthesized_expression "(pEVar19 == (Expr *)0x0)" ( (binary_expression "pEVar19 == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto sqlite3WhereBegin_cold_936;" goto statement_identifier ;)) (expression_statement "uVar30 = pEVar19->flags;" (assignment_expression "uVar30 = pEVar19->flags" identifier = (field_expression "pEVar19->flags" identifier -> field_identifier)) ;) })) (if_statement "if (((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)) {\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" if (parenthesized_expression "(((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable))" ( (binary_expression "((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])) &&\n                         (iVar17 == pEVar19->iTable)" (parenthesized_expression "((pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16]))" ( (binary_expression "(pEVar19->op == 0x9e) &&\n                          (pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])" (parenthesized_expression "(pEVar19->op == 0x9e)" ( (binary_expression "pEVar19->op == 0x9e" (field_expression "pEVar19->op" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16])" ( (binary_expression "pEVar19->iColumn == (int)pIVar50->aiColumn[uVar16]" (field_expression "pEVar19->iColumn" identifier -> field_identifier) == (cast_expression "(int)pIVar50->aiColumn[uVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pIVar50->aiColumn[uVar16]" (field_expression "pIVar50->aiColumn" identifier -> field_identifier) [ identifier ]))) ))) )) && (parenthesized_expression "(iVar17 == pEVar19->iTable)" ( (binary_expression "iVar17 == pEVar19->iTable" identifier == (field_expression "pEVar19->iTable" identifier -> field_identifier)) ))) )) (compound_statement "{\n                        dequote = (Index *)0xa140e;\n                        pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);\n                        if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }\n                        bVar42 = *pCVar24->zName;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" { (expression_statement "dequote = (Index *)0xa140e;" (assignment_expression "dequote = (Index *)0xa140e" identifier = (cast_expression "(Index *)0xa140e" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56);" (assignment_expression "pCVar24 = sqlite3ExprCollSeq(pParse_00,pEVar56)" identifier = (call_expression "sqlite3ExprCollSeq(pParse_00,pEVar56)" identifier (argument_list "(pParse_00,pEVar56)" ( identifier , identifier )))) ;) (if_statement "if (pCVar24 == (CollSeq *)0x0) {\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }" if (parenthesized_expression "(pCVar24 == (CollSeq *)0x0)" ( (binary_expression "pCVar24 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          pCVar24 = pParse_00->db->pDfltColl;\n                        }" { (expression_statement "pCVar24 = pParse_00->db->pDfltColl;" (assignment_expression "pCVar24 = pParse_00->db->pDfltColl" identifier = (field_expression "pParse_00->db->pDfltColl" (field_expression "pParse_00->db" identifier -> field_identifier) -> field_identifier)) ;) })) (expression_statement "bVar42 = *pCVar24->zName;" (assignment_expression "bVar42 = *pCVar24->zName" identifier = (pointer_expression "*pCVar24->zName" * (field_expression "pCVar24->zName" identifier -> field_identifier))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)) {\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9))" ( (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar42)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar42)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar42" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)*pbVar9)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)*pbVar9" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (binary_expression "(uint)*pbVar9" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n                          if (bVar42 == 0) goto LAB_000a14dd;\n                          iVar40 = 1;\n                          while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }\n                        }" { (if_statement "if (bVar42 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar42 == 0)" ( (binary_expression "bVar42 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) (expression_statement "iVar40 = 1;" (assignment_expression "iVar40 = 1" identifier = number_literal) ;) (while_statement "while (bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])) {\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }" while (parenthesized_expression "(bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40]))" ( (comma_expression "bVar42 = pCVar24->zName[iVar40],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])" (assignment_expression "bVar42 = pCVar24->zName[iVar40]" identifier = (subscript_expression "pCVar24->zName[iVar40]" (field_expression "pCVar24->zName" identifier -> field_identifier) [ identifier ])) , (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar42)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar42)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar42)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar42" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar42" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40])" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)pbVar9[iVar40]" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)pbVar9[iVar40]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar9[iVar40]" identifier [ identifier ]))) )))))) )) (compound_statement "{\n                            iVar40 = iVar40 + 1;\n                            if (bVar42 == 0) goto LAB_000a14dd;\n                          }" { (expression_statement "iVar40 = iVar40 + 1;" (assignment_expression "iVar40 = iVar40 + 1" identifier = (binary_expression "iVar40 + 1" identifier + number_literal)) ;) (if_statement "if (bVar42 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar42 == 0)" ( (binary_expression "bVar42 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) })) })) })) (expression_statement "iVar43 = iVar43 + 1;" (assignment_expression "iVar43 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (if_statement "if (pTabList->nSrc <= iVar43) {\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }" if (parenthesized_expression "(pTabList->nSrc <= iVar43)" ( (binary_expression "pTabList->nSrc <= iVar43" (field_expression "pTabList->nSrc" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n                        uVar18 = (uint)pIVar50->nKeyCol;\n                        goto LAB_000a13d9;\n                      }" { (expression_statement "uVar18 = (uint)pIVar50->nKeyCol;" (assignment_expression "uVar18 = (uint)pIVar50->nKeyCol" identifier = (cast_expression "(uint)pIVar50->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->nKeyCol" identifier -> field_identifier))) ;) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a1320;" goto statement_identifier ;) })) (labeled_statement "LAB_000a13e1:\n              local_d0->eDistinct = '\x01';" statement_identifier : (expression_statement "local_d0->eDistinct = '\x01';" (assignment_expression "local_d0->eDistinct = '\x01'" (field_expression "local_d0->eDistinct" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;)) (goto_statement "goto LAB_000a0050;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000a1530:\n          if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }" statement_identifier : (if_statement "if (local_b4 == (Parse *)0x0) {\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }" if (parenthesized_expression "(local_b4 == (Parse *)0x0)" ( (binary_expression "local_b4 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;\n            local_d0->pOrderBy = (ExprList *)pTabList;\n          }" { (expression_statement "local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80;" (assignment_expression "local_d0->wctrlFlags = local_d0->wctrlFlags | 0x80" (field_expression "local_d0->wctrlFlags" identifier -> field_identifier) = (binary_expression "local_d0->wctrlFlags | 0x80" (field_expression "local_d0->wctrlFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "local_d0->pOrderBy = (ExprList *)pTabList;" (assignment_expression "local_d0->pOrderBy = (ExprList *)pTabList" (field_expression "local_d0->pOrderBy" identifier -> field_identifier) = (cast_expression "(ExprList *)pTabList" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) })) (labeled_statement "LAB_000a0050:\n        pWVar47 = sWLB.pNew;" statement_identifier : (expression_statement "pWVar47 = sWLB.pNew;" (assignment_expression "pWVar47 = sWLB.pNew" identifier = (field_expression "sWLB.pNew" identifier . field_identifier)) ;)) (expression_statement "pWVar13 = sWLB.pWInfo;" (assignment_expression "pWVar13 = sWLB.pWInfo" identifier = (field_expression "sWLB.pWInfo" identifier . field_identifier)) ;) (expression_statement "pSVar51 = (sWLB.pWInfo)->pTabList;" (assignment_expression "pSVar51 = (sWLB.pWInfo)->pTabList" identifier = (field_expression "(sWLB.pWInfo)->pTabList" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier)) ;) (if_statement "if (((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }" if (parenthesized_expression "(((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0))))" ( (binary_expression "((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&\n           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))" (parenthesized_expression "((local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0))" ( (binary_expression "(local_a0 == (Parse *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)" (parenthesized_expression "(local_a0 == (Parse *)0x1)" ( (binary_expression "local_a0 == (Parse *)0x1" identifier == (cast_expression "(Parse *)0x1" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)" ( (binary_expression "((sWLB.pWInfo)->wctrlFlags & 0x20) == 0" (parenthesized_expression "((sWLB.pWInfo)->wctrlFlags & 0x20)" ( (binary_expression "(sWLB.pWInfo)->wctrlFlags & 0x20" (field_expression "(sWLB.pWInfo)->wctrlFlags" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))" ( (parenthesized_expression "(pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0))" ( (comma_expression "pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)" (assignment_expression "pTVar8 = pSVar51->a[0].pTab" identifier = (field_expression "pSVar51->a[0].pTab" (subscript_expression "pSVar51->a[0]" (field_expression "pSVar51->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) , (binary_expression "pTVar8->nModuleArg == 0 &&\n            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)" (binary_expression "pTVar8->nModuleArg == 0" (field_expression "pTVar8->nModuleArg" identifier -> field_identifier) == number_literal) && (parenthesized_expression "((pSVar51->a[0].fg.field_0x1 & 2) == 0)" ( (binary_expression "(pSVar51->a[0].fg.field_0x1 & 2) == 0" (parenthesized_expression "(pSVar51->a[0].fg.field_0x1 & 2)" ( (binary_expression "pSVar51->a[0].fg.field_0x1 & 2" (field_expression "pSVar51->a[0].fg.field_0x1" (field_expression "pSVar51->a[0].fg" (subscript_expression "pSVar51->a[0]" (field_expression "pSVar51->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )))) )) ))) )) (compound_statement "{\n          iVar17 = pSVar51->a[0].iCursor;\n          pWVar1 = &(sWLB.pWInfo)->sWC;\n          (sWLB.pNew)->nSkip = 0;\n          (sWLB.pNew)->wsFlags = 0;\n          dequote = (Index *)0x0;\n          pToken = (Token *)0x82;\n          pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);\n          if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }\n          if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          pWVar47->nOut = 1;\n          pWVar13->a[0].pWLoop = pWVar47;\n          *(undefined4 *)&pWVar47->maskSelf = 1;\n          *(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;\n          pWVar13->nRowOut = 1;\n          pWVar13->a[0].iTabCur = iVar17;\n          if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }\n          if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }\nLAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }\n          if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }" { (expression_statement "iVar17 = pSVar51->a[0].iCursor;" (assignment_expression "iVar17 = pSVar51->a[0].iCursor" identifier = (field_expression "pSVar51->a[0].iCursor" (subscript_expression "pSVar51->a[0]" (field_expression "pSVar51->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "pWVar1 = &(sWLB.pWInfo)->sWC;" (assignment_expression "pWVar1 = &(sWLB.pWInfo)->sWC" identifier = (pointer_expression "&(sWLB.pWInfo)->sWC" & (field_expression "(sWLB.pWInfo)->sWC" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "(sWLB.pNew)->nSkip = 0;" (assignment_expression "(sWLB.pNew)->nSkip = 0" (field_expression "(sWLB.pNew)->nSkip" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "(sWLB.pNew)->wsFlags = 0;" (assignment_expression "(sWLB.pNew)->wsFlags = 0" (field_expression "(sWLB.pNew)->wsFlags" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "dequote = (Index *)0x0;" (assignment_expression "dequote = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pToken = (Token *)0x82;" (assignment_expression "pToken = (Token *)0x82" identifier = (cast_expression "(Token *)0x82" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0);" (assignment_expression "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0)" identifier = (call_expression "sqlite3WhereFindTerm(pWVar1,iVar17,-1,0,0x82,(Index *)0x0)" identifier (argument_list "(pWVar1,iVar17,-1,0,0x82,(Index *)0x0)" ( identifier , identifier , number_literal , number_literal , number_literal , (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (pWVar29 == (WhereTerm *)0x0) {\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }\n          else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }" if (parenthesized_expression "(pWVar29 == (WhereTerm *)0x0)" ( (binary_expression "pWVar29 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pIVar50 = pTVar8->pIndex;\n            if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }\n          }" { (expression_statement "pIVar50 = pTVar8->pIndex;" (assignment_expression "pIVar50 = pTVar8->pIndex" identifier = (field_expression "pTVar8->pIndex" identifier -> field_identifier)) ;) (if_statement "if (pIVar50 == (Index *)0x0) {\n              uVar30 = pWVar47->wsFlags;\n            }\n            else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }" if (parenthesized_expression "(pIVar50 == (Index *)0x0)" ( (binary_expression "pIVar50 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              uVar30 = pWVar47->wsFlags;\n            }" { (expression_statement "uVar30 = pWVar47->wsFlags;" (assignment_expression "uVar30 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }) (else_clause "else {\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }" else (compound_statement "{\n              do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);\n              uVar30 = pWVar47->wsFlags;\n            }" { (do_statement "do {\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              } while (pIVar50 != (Index *)0x0);" do (compound_statement "{\n                if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                pIVar50 = pIVar50->pNext;\n              }" { (if_statement "if (((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)) {\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" if (parenthesized_expression "(((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4))" ( (binary_expression "((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)) &&\n                   (pIVar50->nKeyCol < 4)" (parenthesized_expression "((pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0))" ( (binary_expression "(pIVar50->onError != '\0') && (pIVar50->pPartIdxWhere == (Expr *)0x0)" (parenthesized_expression "(pIVar50->onError != '\0')" ( (binary_expression "pIVar50->onError != '\0'" (field_expression "pIVar50->onError" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pIVar50->pPartIdxWhere == (Expr *)0x0)" ( (binary_expression "pIVar50->pPartIdxWhere == (Expr *)0x0" (field_expression "pIVar50->pPartIdxWhere" identifier -> field_identifier) == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(pIVar50->nKeyCol < 4)" ( (binary_expression "pIVar50->nKeyCol < 4" (field_expression "pIVar50->nKeyCol" identifier -> field_identifier) < number_literal) ))) )) (compound_statement "{\n                  op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);\n                  if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }\n                  pWVar47->wsFlags = 0x1201;\n                  uVar15 = (u16)uVar16;\n                  if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" { (expression_statement "op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);" (assignment_expression "op = (Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82)" identifier = (cast_expression "(Token *)((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82)" ( (type_descriptor "Token *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82)" ( (binary_expression "(-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80) + 0x82" (parenthesized_expression "(-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80)" ( (binary_expression "-(uint)((pIVar50->field_0x37 & 8) == 0) & 0xffffff80" (unary_expression "-(uint)((pIVar50->field_0x37 & 8) == 0)" - (call_expression "(uint)((pIVar50->field_0x37 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((pIVar50->field_0x37 & 8) == 0)" ( (binary_expression "(pIVar50->field_0x37 & 8) == 0" (parenthesized_expression "(pIVar50->field_0x37 & 8)" ( (binary_expression "pIVar50->field_0x37 & 8" (field_expression "pIVar50->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal) )))) ;) (if_statement "if (pIVar50->nKeyCol == 0) {\n                    uVar16 = 0;\n                  }\n                  else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }" if (parenthesized_expression "(pIVar50->nKeyCol == 0)" ( (binary_expression "pIVar50->nKeyCol == 0" (field_expression "pIVar50->nKeyCol" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                    uVar16 = 0;\n                  }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }" else (compound_statement "{\n                    uVar18 = 0;\n                    do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);\n                    if (uVar18 != uVar16) goto LAB_000a1960;\n                  }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    } while ((int)uVar18 < (int)uVar16);" do (compound_statement "{\n                      pToken = op;\n                      dequote = pIVar50;\n                      pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);\n                      if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }\n                      pWVar47->aLTerm[uVar18] = pWVar29;\n                      uVar16 = (uint)pIVar50->nKeyCol;\n                      uVar18 = uVar18 + 1;\n                    }" { (expression_statement "pToken = op;" (assignment_expression "pToken = op" identifier = identifier) ;) (expression_statement "dequote = pIVar50;" (assignment_expression "dequote = pIVar50" identifier = identifier) ;) (expression_statement "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50);" (assignment_expression "pWVar29 = sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50)" identifier = (call_expression "sqlite3WhereFindTerm(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50)" identifier (argument_list "(pWVar1,iVar17,uVar18,0,(u32)op,pIVar50)" ( identifier , identifier , identifier , number_literal , (cast_expression "(u32)op" ( (type_descriptor "u32" type_identifier) ) identifier) , identifier )))) ;) (if_statement "if (pWVar29 == (WhereTerm *)0x0) {\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }" if (parenthesized_expression "(pWVar29 == (WhereTerm *)0x0)" ( (binary_expression "pWVar29 == (WhereTerm *)0x0" identifier == (cast_expression "(WhereTerm *)0x0" ( (type_descriptor "WhereTerm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        uVar16 = (uint)pIVar50->nKeyCol;\n                        break;\n                      }" { (expression_statement "uVar16 = (uint)pIVar50->nKeyCol;" (assignment_expression "uVar16 = (uint)pIVar50->nKeyCol" identifier = (cast_expression "(uint)pIVar50->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->nKeyCol" identifier -> field_identifier))) ;) (break_statement "break;" break ;) })) (expression_statement "pWVar47->aLTerm[uVar18] = pWVar29;" (assignment_expression "pWVar47->aLTerm[uVar18] = pWVar29" (subscript_expression "pWVar47->aLTerm[uVar18]" (field_expression "pWVar47->aLTerm" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "uVar16 = (uint)pIVar50->nKeyCol;" (assignment_expression "uVar16 = (uint)pIVar50->nKeyCol" identifier = (cast_expression "(uint)pIVar50->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->nKeyCol" identifier -> field_identifier))) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar18 < (int)uVar16)" ( (binary_expression "(int)uVar18 < (int)uVar16" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (uVar18 != uVar16) goto LAB_000a1960;" if (parenthesized_expression "(uVar18 != uVar16)" ( (binary_expression "uVar18 != uVar16" identifier != identifier) )) (goto_statement "goto LAB_000a1960;" goto statement_identifier ;)) }))) (expression_statement "pWVar47->wsFlags = 0x1201;" (assignment_expression "pWVar47->wsFlags = 0x1201" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar15 = (u16)uVar16;" (assignment_expression "uVar15 = (u16)uVar16" identifier = (cast_expression "(u16)uVar16" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (if_statement "if (((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)) {\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }\n                  else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }" if (parenthesized_expression "(((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0))" ( (binary_expression "((pIVar50->field_0x37 & 0x20) == 0) &&\n                     ((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)" (parenthesized_expression "((pIVar50->field_0x37 & 0x20) == 0)" ( (binary_expression "(pIVar50->field_0x37 & 0x20) == 0" (parenthesized_expression "(pIVar50->field_0x37 & 0x20)" ( (binary_expression "pIVar50->field_0x37 & 0x20" (field_expression "pIVar50->field_0x37" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0)" ( (binary_expression "(*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0 ||\n                      ((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0" (binary_expression "(*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)) != 0" (parenthesized_expression "(*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4))" ( (binary_expression "*(uint *)((int)&pSVar51->a[0].colUsed + 4) &\n                      *(uint *)((int)&pIVar50->colNotIdxed + 4)" (pointer_expression "*(uint *)((int)&pSVar51->a[0].colUsed + 4)" * (cast_expression "(uint *)((int)&pSVar51->a[0].colUsed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar51->a[0].colUsed + 4)" ( (binary_expression "(int)&pSVar51->a[0].colUsed + 4" (cast_expression "(int)&pSVar51->a[0].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar51->a[0].colUsed" & (field_expression "pSVar51->a[0].colUsed" (subscript_expression "pSVar51->a[0]" (field_expression "pSVar51->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) & (pointer_expression "*(uint *)((int)&pIVar50->colNotIdxed + 4)" * (cast_expression "(uint *)((int)&pIVar50->colNotIdxed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIVar50->colNotIdxed + 4)" ( (binary_expression "(int)&pIVar50->colNotIdxed + 4" (cast_expression "(int)&pIVar50->colNotIdxed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIVar50->colNotIdxed" & (field_expression "pIVar50->colNotIdxed" identifier -> field_identifier))) + number_literal) ))))) )) != number_literal) || (binary_expression "((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed) != 0" (parenthesized_expression "((uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed)" ( (binary_expression "(uint)pSVar51->a[0].colUsed & (uint)pIVar50->colNotIdxed" (cast_expression "(uint)pSVar51->a[0].colUsed" ( (type_descriptor "uint" type_identifier) ) (field_expression "pSVar51->a[0].colUsed" (subscript_expression "pSVar51->a[0]" (field_expression "pSVar51->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) & (cast_expression "(uint)pIVar50->colNotIdxed" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->colNotIdxed" identifier -> field_identifier))) )) != number_literal)) ))) )) (compound_statement "{\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->rRun = 0x27;\n                  }" { (expression_statement "pWVar47->nLTerm = uVar15;" (assignment_expression "pWVar47->nLTerm = uVar15" (field_expression "pWVar47->nLTerm" identifier -> field_identifier) = identifier) ;) (expression_statement "(pWVar47->u).btree.nEq = uVar15;" (assignment_expression "(pWVar47->u).btree.nEq = uVar15" (field_expression "(pWVar47->u).btree.nEq" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(pWVar47->u).btree.pIndex = pIVar50;" (assignment_expression "(pWVar47->u).btree.pIndex = pIVar50" (field_expression "(pWVar47->u).btree.pIndex" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pWVar47->rRun = 0x27;" (assignment_expression "pWVar47->rRun = 0x27" (field_expression "pWVar47->rRun" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }" else (compound_statement "{\n                    (pWVar47->u).btree.pIndex = pIVar50;\n                    pWVar47->wsFlags = 0x1241;\n                    pWVar47->nLTerm = uVar15;\n                    (pWVar47->u).btree.nEq = uVar15;\n                    pWVar47->rRun = 0x27;\n                  }" { (expression_statement "(pWVar47->u).btree.pIndex = pIVar50;" (assignment_expression "(pWVar47->u).btree.pIndex = pIVar50" (field_expression "(pWVar47->u).btree.pIndex" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pWVar47->wsFlags = 0x1241;" (assignment_expression "pWVar47->wsFlags = 0x1241" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = number_literal) ;) (expression_statement "pWVar47->nLTerm = uVar15;" (assignment_expression "pWVar47->nLTerm = uVar15" (field_expression "pWVar47->nLTerm" identifier -> field_identifier) = identifier) ;) (expression_statement "(pWVar47->u).btree.nEq = uVar15;" (assignment_expression "(pWVar47->u).btree.nEq = uVar15" (field_expression "(pWVar47->u).btree.nEq" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pWVar47->rRun = 0x27;" (assignment_expression "pWVar47->rRun = 0x27" (field_expression "pWVar47->rRun" identifier -> field_identifier) = number_literal) ;) }))) (goto_statement "goto LAB_000a1a26;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1960:\n                pIVar50 = pIVar50->pNext;" statement_identifier : (expression_statement "pIVar50 = pIVar50->pNext;" (assignment_expression "pIVar50 = pIVar50->pNext" identifier = (field_expression "pIVar50->pNext" identifier -> field_identifier)) ;)) }) while (parenthesized_expression "(pIVar50 != (Index *)0x0)" ( (binary_expression "pIVar50 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar30 = pWVar47->wsFlags;" (assignment_expression "uVar30 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }))) }) (else_clause "else {\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }" else (compound_statement "{\n            pWVar47->wsFlags = 0x1101;\n            *pWVar47->aLTerm = pWVar29;\n            pWVar47->nLTerm = 1;\n            (pWVar47->u).btree.nEq = 1;\n            pWVar47->rRun = 0x21;\n            uVar30 = pWVar47->wsFlags;\n          }" { (expression_statement "pWVar47->wsFlags = 0x1101;" (assignment_expression "pWVar47->wsFlags = 0x1101" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = number_literal) ;) (expression_statement "*pWVar47->aLTerm = pWVar29;" (assignment_expression "*pWVar47->aLTerm = pWVar29" (pointer_expression "*pWVar47->aLTerm" * (field_expression "pWVar47->aLTerm" identifier -> field_identifier)) = identifier) ;) (expression_statement "pWVar47->nLTerm = 1;" (assignment_expression "pWVar47->nLTerm = 1" (field_expression "pWVar47->nLTerm" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pWVar47->u).btree.nEq = 1;" (assignment_expression "(pWVar47->u).btree.nEq = 1" (field_expression "(pWVar47->u).btree.nEq" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "pWVar47->rRun = 0x21;" (assignment_expression "pWVar47->rRun = 0x21" (field_expression "pWVar47->rRun" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar30 = pWVar47->wsFlags;" (assignment_expression "uVar30 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }))) (if_statement "if (uVar30 == 0) {\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }" if (parenthesized_expression "(uVar30 == 0)" ( (binary_expression "uVar30 == 0" identifier == number_literal) )) (compound_statement "{\n            pSVar51 = (sWLB.pWInfo)->pTabList;\n            goto LAB_000a0070;\n          }" { (expression_statement "pSVar51 = (sWLB.pWInfo)->pTabList;" (assignment_expression "pSVar51 = (sWLB.pWInfo)->pTabList" identifier = (field_expression "(sWLB.pWInfo)->pTabList" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier)) ;) (goto_statement "goto LAB_000a0070;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1a26:\n          pWVar47->nOut = 1;" statement_identifier : (expression_statement "pWVar47->nOut = 1;" (assignment_expression "pWVar47->nOut = 1" (field_expression "pWVar47->nOut" identifier -> field_identifier) = number_literal) ;)) (expression_statement "pWVar13->a[0].pWLoop = pWVar47;" (assignment_expression "pWVar13->a[0].pWLoop = pWVar47" (field_expression "pWVar13->a[0].pWLoop" (subscript_expression "pWVar13->a[0]" (field_expression "pWVar13->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&pWVar47->maskSelf = 1;" (assignment_expression "*(undefined4 *)&pWVar47->maskSelf = 1" (pointer_expression "*(undefined4 *)&pWVar47->maskSelf" * (cast_expression "(undefined4 *)&pWVar47->maskSelf" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0;" (assignment_expression "*(undefined4 *)((int)&pWVar47->maskSelf + 4) = 0" (pointer_expression "*(undefined4 *)((int)&pWVar47->maskSelf + 4)" * (cast_expression "(undefined4 *)((int)&pWVar47->maskSelf + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar47->maskSelf + 4)" ( (binary_expression "(int)&pWVar47->maskSelf + 4" (cast_expression "(int)&pWVar47->maskSelf" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "pWVar13->nRowOut = 1;" (assignment_expression "pWVar13->nRowOut = 1" (field_expression "pWVar13->nRowOut" identifier -> field_identifier) = number_literal) ;) (expression_statement "pWVar13->a[0].iTabCur = iVar17;" (assignment_expression "pWVar13->a[0].iTabCur = iVar17" (field_expression "pWVar13->a[0].iTabCur" (subscript_expression "pWVar13->a[0]" (field_expression "pWVar13->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = identifier) ;) (if_statement "if (pWVar13->pOrderBy != (ExprList *)0x0) {\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }" if (parenthesized_expression "(pWVar13->pOrderBy != (ExprList *)0x0)" ( (binary_expression "pWVar13->pOrderBy != (ExprList *)0x0" (field_expression "pWVar13->pOrderBy" identifier -> field_identifier) != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;\n          }" { (expression_statement "pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr;" (assignment_expression "pWVar13->nOBSat = (i8)pWVar13->pOrderBy->nExpr" (field_expression "pWVar13->nOBSat" identifier -> field_identifier) = (cast_expression "(i8)pWVar13->pOrderBy->nExpr" ( (type_descriptor "i8" type_identifier) ) (field_expression "pWVar13->pOrderBy->nExpr" (field_expression "pWVar13->pOrderBy" identifier -> field_identifier) -> field_identifier))) ;) })) (if_statement "if ((pWVar13->wctrlFlags & 0x100) != 0) {\n            pWVar13->eDistinct = '\x01';\n          }" if (parenthesized_expression "((pWVar13->wctrlFlags & 0x100) != 0)" ( (binary_expression "(pWVar13->wctrlFlags & 0x100) != 0" (parenthesized_expression "(pWVar13->wctrlFlags & 0x100)" ( (binary_expression "pWVar13->wctrlFlags & 0x100" (field_expression "pWVar13->wctrlFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n            pWVar13->eDistinct = '\x01';\n          }" { (expression_statement "pWVar13->eDistinct = '\x01';" (assignment_expression "pWVar13->eDistinct = '\x01'" (field_expression "pWVar13->eDistinct" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (labeled_statement "LAB_000a0239:\n          if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }" statement_identifier : (if_statement "if (local_d0->pOrderBy == (ExprList *)0x0) {\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }" if (parenthesized_expression "(local_d0->pOrderBy == (ExprList *)0x0)" ( (binary_expression "local_d0->pOrderBy == (ExprList *)0x0" (field_expression "local_d0->pOrderBy" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }\n          }" { (labeled_statement "LAB_000a0ea8:\n            if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }" statement_identifier : (if_statement "if ((db->flags & 0x1000) != 0) {\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }" if (parenthesized_expression "((db->flags & 0x1000) != 0)" ( (binary_expression "(db->flags & 0x1000) != 0" (parenthesized_expression "(db->flags & 0x1000)" ( (binary_expression "db->flags & 0x1000" (field_expression "db->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              *(undefined4 *)&local_d0->revMask = 0xffffffff;\n              *(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;\n            }" { (expression_statement "*(undefined4 *)&local_d0->revMask = 0xffffffff;" (assignment_expression "*(undefined4 *)&local_d0->revMask = 0xffffffff" (pointer_expression "*(undefined4 *)&local_d0->revMask" * (cast_expression "(undefined4 *)&local_d0->revMask" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_d0->revMask" & (field_expression "local_d0->revMask" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)&local_d0->revMask + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)&local_d0->revMask + 4)" * (cast_expression "(undefined4 *)((int)&local_d0->revMask + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_d0->revMask + 4)" ( (binary_expression "(int)&local_d0->revMask + 4" (cast_expression "(int)&local_d0->revMask" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_d0->revMask" & (field_expression "local_d0->revMask" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) }))) }))) (if_statement "if ((pParse_00->nErr == 0) && (db->mallocFailed == '\0')) {\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" if (parenthesized_expression "((pParse_00->nErr == 0) && (db->mallocFailed == '\0'))" ( (binary_expression "(pParse_00->nErr == 0) && (db->mallocFailed == '\0')" (parenthesized_expression "(pParse_00->nErr == 0)" ( (binary_expression "pParse_00->nErr == 0" (field_expression "pParse_00->nErr" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }\n            puVar2 = &local_d0->pParse->nQueryLoop;\n            *puVar2 = *puVar2 + (int)local_d0->nRowOut;\n            bVar42 = 0;\n            if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" { (if_statement "if ((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)) {\n              local_cc = 0xffffffffffffffff;\n            }\n            else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }" if (parenthesized_expression "((local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0))" ( (binary_expression "(local_d0->nLevel < 2) || (pTabList == (SrcList *)0x0)" (parenthesized_expression "(local_d0->nLevel < 2)" ( (binary_expression "local_d0->nLevel < 2" (field_expression "local_d0->nLevel" identifier -> field_identifier) < number_literal) )) || (parenthesized_expression "(pTabList == (SrcList *)0x0)" ( (binary_expression "pTabList == (SrcList *)0x0" identifier == (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              local_cc = 0xffffffffffffffff;\n            }" { (expression_statement "local_cc = 0xffffffffffffffff;" (assignment_expression "local_cc = 0xffffffffffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }" else (compound_statement "{\n              local_cc = 0xffffffffffffffff;\n              if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }\n            }" { (expression_statement "local_cc = 0xffffffffffffffff;" (assignment_expression "local_cc = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if ((db->dbOptFlags & 0x100) == 0) {\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }" if (parenthesized_expression "((db->dbOptFlags & 0x100) == 0)" ( (binary_expression "(db->dbOptFlags & 0x100) == 0" (parenthesized_expression "(db->dbOptFlags & 0x100)" ( (binary_expression "db->dbOptFlags & 0x100" (field_expression "db->dbOptFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                dequote = (Index *)0xa1746;\n                uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);\n                if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }\n                local_b4 = (Parse *)(uVar55 >> 0x20);\n                local_bc = (uint)uVar55;\n                local_cc = 0xffffffffffffffff;\n                iVar17 = local_d0->nLevel - 1;\n                uVar57 = (undefined1)iVar17;\n                uVar58 = (undefined1)((uint)iVar17 >> 8);\n                uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }\n              }" { (expression_statement "dequote = (Index *)0xa1746;" (assignment_expression "dequote = (Index *)0xa1746" identifier = (cast_expression "(Index *)0xa1746" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList);" (assignment_expression "uVar55 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList)" identifier = (call_expression "sqlite3WhereExprListUsage(&local_d0->sMaskSet,(ExprList *)pTabList)" identifier (argument_list "(&local_d0->sMaskSet,(ExprList *)pTabList)" ( (pointer_expression "&local_d0->sMaskSet" & (field_expression "local_d0->sMaskSet" identifier -> field_identifier)) , (cast_expression "(ExprList *)pTabList" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sWLB.pOrderBy != (ExprList *)0x0) {\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }" if (parenthesized_expression "(sWLB.pOrderBy != (ExprList *)0x0)" ( (binary_expression "sWLB.pOrderBy != (ExprList *)0x0" (field_expression "sWLB.pOrderBy" identifier . field_identifier) != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  dequote = (Index *)0xa1764;\n                  BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);\n                  uVar55 = uVar55 | BVar54;\n                }" { (expression_statement "dequote = (Index *)0xa1764;" (assignment_expression "dequote = (Index *)0xa1764" identifier = (cast_expression "(Index *)0xa1764" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy);" (assignment_expression "BVar54 = sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy)" identifier = (call_expression "sqlite3WhereExprListUsage(&local_d0->sMaskSet,sWLB.pOrderBy)" identifier (argument_list "(&local_d0->sMaskSet,sWLB.pOrderBy)" ( (pointer_expression "&local_d0->sMaskSet" & (field_expression "local_d0->sMaskSet" identifier -> field_identifier)) , (field_expression "sWLB.pOrderBy" identifier . field_identifier) )))) ;) (expression_statement "uVar55 = uVar55 | BVar54;" (assignment_expression "uVar55 = uVar55 | BVar54" identifier = (binary_expression "uVar55 | BVar54" identifier | identifier)) ;) })) (expression_statement "local_b4 = (Parse *)(uVar55 >> 0x20);" (assignment_expression "local_b4 = (Parse *)(uVar55 >> 0x20)" identifier = (cast_expression "(Parse *)(uVar55 >> 0x20)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar55 >> 0x20)" ( (binary_expression "uVar55 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_bc = (uint)uVar55;" (assignment_expression "local_bc = (uint)uVar55" identifier = (cast_expression "(uint)uVar55" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_cc = 0xffffffffffffffff;" (assignment_expression "local_cc = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "iVar17 = local_d0->nLevel - 1;" (assignment_expression "iVar17 = local_d0->nLevel - 1" identifier = (binary_expression "local_d0->nLevel - 1" (field_expression "local_d0->nLevel" identifier -> field_identifier) - number_literal)) ;) (expression_statement "uVar57 = (undefined1)iVar17;" (assignment_expression "uVar57 = (undefined1)iVar17" identifier = (cast_expression "(undefined1)iVar17" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar17 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar17 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar17 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar17 >> 8)" ( (binary_expression "(uint)iVar17 >> 8" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar17 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar17 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar17 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar17 >> 0x10)" ( (binary_expression "(uint)iVar17 >> 0x10" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (0 < iVar17) {\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }" if (parenthesized_expression "(0 < iVar17)" ( (binary_expression "0 < iVar17" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);\n                }" { (do_statement "do {\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  } while (iVar17 != 0);" do (compound_statement "{\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                    pWVar47 = local_d0->a[iVar17].pWLoop;\n                    if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;\n                    uVar57 = (undefined1)iVar17;\n                    uVar58 = (undefined1)((uint)iVar17 >> 8);\n                    uVar59 = (undefined2)((uint)iVar17 >> 0x10);\n                  }" { (expression_statement "iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" (assignment_expression "iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier = (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) ;) (expression_statement "pWVar47 = local_d0->a[iVar17].pWLoop;" (assignment_expression "pWVar47 = local_d0->a[iVar17].pWLoop" identifier = (field_expression "local_d0->a[iVar17].pWLoop" (subscript_expression "local_d0->a[iVar17]" (field_expression "local_d0->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }" if (parenthesized_expression "(((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0))))" ( (binary_expression "((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0) &&\n                       (((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))" (parenthesized_expression "((local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0)" ( (binary_expression "(local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8) != 0" (parenthesized_expression "(local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8)" ( (binary_expression "local_d0->pTabList->a[pWVar47->iTab].fg.jointype & 8" (field_expression "local_d0->pTabList->a[pWVar47->iTab].fg.jointype" (field_expression "local_d0->pTabList->a[pWVar47->iTab].fg" (subscript_expression "local_d0->pTabList->a[pWVar47->iTab]" (field_expression "local_d0->pTabList->a" (field_expression "local_d0->pTabList" identifier -> field_identifier) -> field_identifier) [ (field_expression "pWVar47->iTab" identifier -> field_identifier) ]) . field_identifier) . field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))" ( (parenthesized_expression "((wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0))" ( (binary_expression "(wctrlFlags_00 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)" (binary_expression "(wctrlFlags_00 & 0x100) != 0" (parenthesized_expression "(wctrlFlags_00 & 0x100)" ( (binary_expression "wctrlFlags_00 & 0x100" identifier & number_literal) )) != number_literal) || (parenthesized_expression "((pWVar47->wsFlags & 0x1000) != 0)" ( (binary_expression "(pWVar47->wsFlags & 0x1000) != 0" (parenthesized_expression "(pWVar47->wsFlags & 0x1000)" ( (binary_expression "pWVar47->wsFlags & 0x1000" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n                      uVar16 = (uint)pWVar47->maskSelf;\n                      uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                      if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }\n                    }" { (expression_statement "uVar16 = (uint)pWVar47->maskSelf;" (assignment_expression "uVar16 = (uint)pWVar47->maskSelf" identifier = (cast_expression "(uint)pWVar47->maskSelf" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) ;) (expression_statement "uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);" (assignment_expression "uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4)" identifier = (pointer_expression "*(uint *)((int)&pWVar47->maskSelf + 4)" * (cast_expression "(uint *)((int)&pWVar47->maskSelf + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar47->maskSelf + 4)" ( (binary_expression "(int)&pWVar47->maskSelf + 4" (cast_expression "(int)&pWVar47->maskSelf" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0) {\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }" if (parenthesized_expression "(((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0)" ( (binary_expression "((uint)local_b4 & uVar18) == 0 && (local_bc & uVar16) == 0" (binary_expression "((uint)local_b4 & uVar18) == 0" (parenthesized_expression "((uint)local_b4 & uVar18)" ( (binary_expression "(uint)local_b4 & uVar18" (cast_expression "(uint)local_b4" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) == number_literal) && (binary_expression "(local_bc & uVar16) == 0" (parenthesized_expression "(local_bc & uVar16)" ( (binary_expression "local_bc & uVar16" identifier & identifier) )) == number_literal)) )) (compound_statement "{\n                        pWVar29 = (sWLB.pWC)->a;\n                        pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;\n                        pWVar32 = pWVar29;\n                        if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }\n                        iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));\n                        bVar42 = local_d0->nLevel;\n                        if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }\n                        local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);\n                        local_d0->nLevel = bVar42 - 1;\n                      }" { (expression_statement "pWVar29 = (sWLB.pWC)->a;" (assignment_expression "pWVar29 = (sWLB.pWC)->a" identifier = (field_expression "(sWLB.pWC)->a" (parenthesized_expression "(sWLB.pWC)" ( (field_expression "sWLB.pWC" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "pWVar31 = pWVar29 + (sWLB.pWC)->nTerm;" (assignment_expression "pWVar31 = pWVar29 + (sWLB.pWC)->nTerm" identifier = (binary_expression "pWVar29 + (sWLB.pWC)->nTerm" identifier + (field_expression "(sWLB.pWC)->nTerm" (parenthesized_expression "(sWLB.pWC)" ( (field_expression "sWLB.pWC" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "pWVar32 = pWVar29;" (assignment_expression "pWVar32 = pWVar29" identifier = identifier) ;) (if_statement "if (pWVar29 < pWVar31) {\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }\n                        else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }" if (parenthesized_expression "(pWVar29 < pWVar31)" ( (binary_expression "pWVar29 < pWVar31" identifier < identifier) )) (compound_statement "{\n                          do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                          while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }\n                        }" { (do_statement "do {\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          } while (pWVar32 < pWVar31);" do (compound_statement "{\n                            if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }\n                            pWVar32 = pWVar32 + 1;\n                          }" { (if_statement "if (((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))) {\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }" if (parenthesized_expression "(((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor))))" ( (binary_expression "((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0) &&\n                               (((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))" (parenthesized_expression "((*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0)" ( (binary_expression "(*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0 ||\n                                 ((uint)pWVar32->prereqAll & uVar16) != 0" (binary_expression "(*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18) != 0" (parenthesized_expression "(*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18)" ( (binary_expression "*(uint *)((int)&pWVar32->prereqAll + 4) & uVar18" (pointer_expression "*(uint *)((int)&pWVar32->prereqAll + 4)" * (cast_expression "(uint *)((int)&pWVar32->prereqAll + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar32->prereqAll + 4)" ( (binary_expression "(int)&pWVar32->prereqAll + 4" (cast_expression "(int)&pWVar32->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar32->prereqAll" & (field_expression "pWVar32->prereqAll" identifier -> field_identifier))) + number_literal) )))) & identifier) )) != number_literal) || (binary_expression "((uint)pWVar32->prereqAll & uVar16) != 0" (parenthesized_expression "((uint)pWVar32->prereqAll & uVar16)" ( (binary_expression "(uint)pWVar32->prereqAll & uVar16" (cast_expression "(uint)pWVar32->prereqAll" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar32->prereqAll" identifier -> field_identifier)) & identifier) )) != number_literal)) )) && (parenthesized_expression "(((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)))" ( (parenthesized_expression "((pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor))" ( (binary_expression "(pWVar32->pExpr->flags & 1) == 0 ||\n                                ((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)" (binary_expression "(pWVar32->pExpr->flags & 1) == 0" (parenthesized_expression "(pWVar32->pExpr->flags & 1)" ( (binary_expression "pWVar32->pExpr->flags & 1" (field_expression "pWVar32->pExpr->flags" (field_expression "pWVar32->pExpr" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) || (parenthesized_expression "((int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor)" ( (binary_expression "(int)pWVar32->pExpr->iRightJoinTable !=\n                                 local_d0->pTabList->a[pWVar47->iTab].iCursor" (cast_expression "(int)pWVar32->pExpr->iRightJoinTable" ( (type_descriptor "int" primitive_type) ) (field_expression "pWVar32->pExpr->iRightJoinTable" (field_expression "pWVar32->pExpr" identifier -> field_identifier) -> field_identifier)) != (field_expression "local_d0->pTabList->a[pWVar47->iTab].iCursor" (subscript_expression "local_d0->pTabList->a[pWVar47->iTab]" (field_expression "local_d0->pTabList->a" (field_expression "local_d0->pTabList" identifier -> field_identifier) -> field_identifier) [ (field_expression "pWVar47->iTab" identifier -> field_identifier) ]) . field_identifier)) ))) )) ))) )) (compound_statement "{\n                              if (pWVar32 < pWVar31) goto LAB_000a17a8;\n                              break;\n                            }" { (if_statement "if (pWVar32 < pWVar31) goto LAB_000a17a8;" if (parenthesized_expression "(pWVar32 < pWVar31)" ( (binary_expression "pWVar32 < pWVar31" identifier < identifier) )) (goto_statement "goto LAB_000a17a8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "pWVar32 = pWVar32 + 1;" (assignment_expression "pWVar32 = pWVar32 + 1" identifier = (binary_expression "pWVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pWVar32 < pWVar31)" ( (binary_expression "pWVar32 < pWVar31" identifier < identifier) )) ;) (expression_statement "local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);" (assignment_expression "local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" identifier = (call_expression "CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" identifier (argument_list "(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" ( (binary_expression "~uVar18 & (uint)local_cc._4_4_" (unary_expression "~uVar18" ~ identifier) & (cast_expression "(uint)local_cc._4_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_cc._4_4_" identifier . field_identifier))) , (binary_expression "~uVar16 & (uint)(WhereInfo *)local_cc" (unary_expression "~uVar16" ~ identifier) & (cast_expression "(uint)(WhereInfo *)local_cc" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(WhereInfo *)local_cc" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) (while_statement "while( true ) {\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar31 <= pWVar29) break;\n                            uVar16 = (uint)pWVar47->maskSelf;\n                            uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);\n                          }" { (if_statement "if ((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0) {\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }" if (parenthesized_expression "((uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0)" ( (binary_expression "(uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0 ||\n                                (uVar16 & (uint)pWVar29->prereqAll) != 0" (binary_expression "(uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)) != 0" (parenthesized_expression "(uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4))" ( (binary_expression "uVar18 & *(uint *)((int)&pWVar29->prereqAll + 4)" identifier & (pointer_expression "*(uint *)((int)&pWVar29->prereqAll + 4)" * (cast_expression "(uint *)((int)&pWVar29->prereqAll + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar29->prereqAll + 4)" ( (binary_expression "(int)&pWVar29->prereqAll + 4" (cast_expression "(int)&pWVar29->prereqAll" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar29->prereqAll" & (field_expression "pWVar29->prereqAll" identifier -> field_identifier))) + number_literal) ))))) )) != number_literal) || (binary_expression "(uVar16 & (uint)pWVar29->prereqAll) != 0" (parenthesized_expression "(uVar16 & (uint)pWVar29->prereqAll)" ( (binary_expression "uVar16 & (uint)pWVar29->prereqAll" identifier & (cast_expression "(uint)pWVar29->prereqAll" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar29->prereqAll" identifier -> field_identifier))) )) != number_literal)) )) (compound_statement "{\n                              pWVar29->wtFlags = pWVar29->wtFlags | 4;\n                            }" { (expression_statement "pWVar29->wtFlags = pWVar29->wtFlags | 4;" (assignment_expression "pWVar29->wtFlags = pWVar29->wtFlags | 4" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) = (binary_expression "pWVar29->wtFlags | 4" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) | number_literal)) ;) })) (expression_statement "pWVar29 = pWVar29 + 1;" (assignment_expression "pWVar29 = pWVar29 + 1" identifier = (binary_expression "pWVar29 + 1" identifier + number_literal)) ;) (if_statement "if (pWVar31 <= pWVar29) break;" if (parenthesized_expression "(pWVar31 <= pWVar29)" ( (binary_expression "pWVar31 <= pWVar29" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar16 = (uint)pWVar47->maskSelf;" (assignment_expression "uVar16 = (uint)pWVar47->maskSelf" identifier = (cast_expression "(uint)pWVar47->maskSelf" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) ;) (expression_statement "uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4);" (assignment_expression "uVar18 = *(uint *)((int)&pWVar47->maskSelf + 4)" identifier = (pointer_expression "*(uint *)((int)&pWVar47->maskSelf + 4)" * (cast_expression "(uint *)((int)&pWVar47->maskSelf + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar47->maskSelf + 4)" ( (binary_expression "(int)&pWVar47->maskSelf + 4" (cast_expression "(int)&pWVar47->maskSelf" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) + number_literal) ))))) ;) })) }) (else_clause "else {\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }" else (compound_statement "{\n                          local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);\n                        }" { (expression_statement "local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc);" (assignment_expression "local_cc = CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" identifier = (call_expression "CONCAT44(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" identifier (argument_list "(~uVar18 & (uint)local_cc._4_4_,\n                                              ~uVar16 & (uint)(WhereInfo *)local_cc)" ( (binary_expression "~uVar18 & (uint)local_cc._4_4_" (unary_expression "~uVar18" ~ identifier) & (cast_expression "(uint)local_cc._4_4_" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_cc._4_4_" identifier . field_identifier))) , (binary_expression "~uVar16 & (uint)(WhereInfo *)local_cc" (unary_expression "~uVar16" ~ identifier) & (cast_expression "(uint)(WhereInfo *)local_cc" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(WhereInfo *)local_cc" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )))) ;) }))) (expression_statement "iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57));" (assignment_expression "iVar43 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier = (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) ;) (expression_statement "bVar42 = local_d0->nLevel;" (assignment_expression "bVar42 = local_d0->nLevel" identifier = (field_expression "local_d0->nLevel" identifier -> field_identifier)) ;) (if_statement "if (bVar42 - 1 != iVar43) {\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }" if (parenthesized_expression "(bVar42 - 1 != iVar43)" ( (binary_expression "bVar42 - 1 != iVar43" (binary_expression "bVar42 - 1" identifier - number_literal) != identifier) )) (compound_statement "{\n                          memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);\n                          bVar42 = local_d0->nLevel;\n                        }" { (expression_statement "memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44);" (call_expression "memmove((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44)" identifier (argument_list "((WhereLevel *)((int)local_b8 + iVar17 * 0x44),\n                                  local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6,\n                                  ((bVar42 - 1) - iVar43) * 0x44)" ( (cast_expression "(WhereLevel *)((int)local_b8 + iVar17 * 0x44)" ( (type_descriptor "WhereLevel *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_b8 + iVar17 * 0x44)" ( (binary_expression "(int)local_b8 + iVar17 * 0x44" (cast_expression "(int)local_b8" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar17 * 0x44" identifier * number_literal)) ))) , (binary_expression "local_d0[1].aiCurOnePass + iVar17 * 0x11 + -6" (binary_expression "local_d0[1].aiCurOnePass + iVar17 * 0x11" (field_expression "local_d0[1].aiCurOnePass" (subscript_expression "local_d0[1]" identifier [ number_literal ]) . field_identifier) + (binary_expression "iVar17 * 0x11" identifier * number_literal)) + number_literal) , (binary_expression "((bVar42 - 1) - iVar43) * 0x44" (parenthesized_expression "((bVar42 - 1) - iVar43)" ( (binary_expression "(bVar42 - 1) - iVar43" (parenthesized_expression "(bVar42 - 1)" ( (binary_expression "bVar42 - 1" identifier - number_literal) )) - identifier) )) * number_literal) ))) ;) (expression_statement "bVar42 = local_d0->nLevel;" (assignment_expression "bVar42 = local_d0->nLevel" identifier = (field_expression "local_d0->nLevel" identifier -> field_identifier)) ;) })) (expression_statement "local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3);" (assignment_expression "local_a0 = (Parse *)((int)&local_a0[-1].pRename + 3)" identifier = (cast_expression "(Parse *)((int)&local_a0[-1].pRename + 3)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_a0[-1].pRename + 3)" ( (binary_expression "(int)&local_a0[-1].pRename + 3" (cast_expression "(int)&local_a0[-1].pRename" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_a0[-1].pRename" & (field_expression "local_a0[-1].pRename" (subscript_expression "local_a0[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "local_d0->nLevel = bVar42 - 1;" (assignment_expression "local_d0->nLevel = bVar42 - 1" (field_expression "local_d0->nLevel" identifier -> field_identifier) = (binary_expression "bVar42 - 1" identifier - number_literal)) ;) })) })) (labeled_statement "LAB_000a17a8:\n                    iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;" statement_identifier : (expression_statement "iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1;" (assignment_expression "iVar17 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1" identifier = (binary_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) + -1" (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) + number_literal)) ;)) (expression_statement "uVar57 = (undefined1)iVar17;" (assignment_expression "uVar57 = (undefined1)iVar17" identifier = (cast_expression "(undefined1)iVar17" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar17 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar17 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar17 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar17 >> 8)" ( (binary_expression "(uint)iVar17 >> 8" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar17 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar17 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar17 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar17 >> 0x10)" ( (binary_expression "(uint)iVar17 >> 0x10" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }) while (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) ;) })) })) }))) (expression_statement "puVar2 = &local_d0->pParse->nQueryLoop;" (assignment_expression "puVar2 = &local_d0->pParse->nQueryLoop" identifier = (pointer_expression "&local_d0->pParse->nQueryLoop" & (field_expression "local_d0->pParse->nQueryLoop" (field_expression "local_d0->pParse" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*puVar2 = *puVar2 + (int)local_d0->nRowOut;" (assignment_expression "*puVar2 = *puVar2 + (int)local_d0->nRowOut" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 + (int)local_d0->nRowOut" (pointer_expression "*puVar2" * identifier) + (cast_expression "(int)local_d0->nRowOut" ( (type_descriptor "int" primitive_type) ) (field_expression "local_d0->nRowOut" identifier -> field_identifier)))) ;) (expression_statement "bVar42 = 0;" (assignment_expression "bVar42 = 0" identifier = number_literal) ;) (if_statement "if ((wctrlFlags_00 & 4) != 0) {\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }" if (parenthesized_expression "((wctrlFlags_00 & 4) != 0)" ( (binary_expression "(wctrlFlags_00 & 4) != 0" (parenthesized_expression "(wctrlFlags_00 & 4)" ( (binary_expression "wctrlFlags_00 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              pWVar47 = local_d0->a[0].pWLoop;\n              uVar16 = pWVar47->wsFlags;\n              if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }\n              local_d0->eOnePass = uVar33;\n              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }\n            }" { (expression_statement "pWVar47 = local_d0->a[0].pWLoop;" (assignment_expression "pWVar47 = local_d0->a[0].pWLoop" identifier = (field_expression "local_d0->a[0].pWLoop" (subscript_expression "local_d0->a[0]" (field_expression "local_d0->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar16 = pWVar47->wsFlags;" (assignment_expression "uVar16 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) (if_statement "if ((uVar16 & 0x1000) == 0) {\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }\n              else {\n                uVar33 = '\x01';\n              }" if (parenthesized_expression "((uVar16 & 0x1000) == 0)" ( (binary_expression "(uVar16 & 0x1000) == 0" (parenthesized_expression "(uVar16 & 0x1000)" ( (binary_expression "uVar16 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar33 = '\x02';\n              }" { (if_statement "if ((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))) goto LAB_000a02e0;" if (parenthesized_expression "((((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0))))" ( (binary_expression "(((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||\n                   (((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))" (parenthesized_expression "(((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0))" ( (binary_expression "((wctrlFlags_00 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)" (parenthesized_expression "((wctrlFlags_00 & 8) == 0)" ( (binary_expression "(wctrlFlags_00 & 8) == 0" (parenthesized_expression "(wctrlFlags_00 & 8)" ( (binary_expression "wctrlFlags_00 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((pSrc->a[0].pTab)->nModuleArg != 0)" ( (binary_expression "(pSrc->a[0].pTab)->nModuleArg != 0" (field_expression "(pSrc->a[0].pTab)->nModuleArg" (parenthesized_expression "(pSrc->a[0].pTab)" ( (field_expression "pSrc->a[0].pTab" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier) != number_literal) ))) )) || (parenthesized_expression "(((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)))" ( (parenthesized_expression "((uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0))" ( (binary_expression "(uVar16 & 0x2000) != 0 && ((wctrlFlags_00 & 0x10) == 0)" (binary_expression "(uVar16 & 0x2000) != 0" (parenthesized_expression "(uVar16 & 0x2000)" ( (binary_expression "uVar16 & 0x2000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((wctrlFlags_00 & 0x10) == 0)" ( (binary_expression "(wctrlFlags_00 & 0x10) == 0" (parenthesized_expression "(wctrlFlags_00 & 0x10)" ( (binary_expression "wctrlFlags_00 & 0x10" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_000a02e0;" goto statement_identifier ;)) (expression_statement "uVar33 = '\x02';" (assignment_expression "uVar33 = '\x02'" identifier = (char_literal "'\x02'" ' escape_sequence ')) ;) }) (else_clause "else {\n                uVar33 = '\x01';\n              }" else (compound_statement "{\n                uVar33 = '\x01';\n              }" { (expression_statement "uVar33 = '\x01';" (assignment_expression "uVar33 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) }))) (expression_statement "local_d0->eOnePass = uVar33;" (assignment_expression "local_d0->eOnePass = uVar33" (field_expression "local_d0->eOnePass" identifier -> field_identifier) = identifier) ;) (if_statement "if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)) {\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }" if (parenthesized_expression "((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0))" ( (binary_expression "(((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((uVar16 & 0x40) != 0)" (parenthesized_expression "(((pSrc->a[0].pTab)->tabFlags & 0x20) == 0)" ( (binary_expression "((pSrc->a[0].pTab)->tabFlags & 0x20) == 0" (parenthesized_expression "((pSrc->a[0].pTab)->tabFlags & 0x20)" ( (binary_expression "(pSrc->a[0].pTab)->tabFlags & 0x20" (field_expression "(pSrc->a[0].pTab)->tabFlags" (parenthesized_expression "(pSrc->a[0].pTab)" ( (field_expression "pSrc->a[0].pTab" (subscript_expression "pSrc->a[0]" (field_expression "pSrc->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) )) -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((uVar16 & 0x40) != 0)" ( (binary_expression "(uVar16 & 0x40) != 0" (parenthesized_expression "(uVar16 & 0x40)" ( (binary_expression "uVar16 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                bVar42 = 0;\n                if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }\n                pWVar47->wsFlags = uVar16 & 0xffffffbf;\n              }" { (expression_statement "bVar42 = 0;" (assignment_expression "bVar42 = 0" identifier = number_literal) ;) (if_statement "if ((wctrlFlags_00 & 8) != 0) {\n                  bVar42 = 8;\n                }" if (parenthesized_expression "((wctrlFlags_00 & 8) != 0)" ( (binary_expression "(wctrlFlags_00 & 8) != 0" (parenthesized_expression "(wctrlFlags_00 & 8)" ( (binary_expression "wctrlFlags_00 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar42 = 8;\n                }" { (expression_statement "bVar42 = 8;" (assignment_expression "bVar42 = 8" identifier = number_literal) ;) })) (expression_statement "pWVar47->wsFlags = uVar16 & 0xffffffbf;" (assignment_expression "pWVar47->wsFlags = uVar16 & 0xffffffbf" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = (binary_expression "uVar16 & 0xffffffbf" identifier & number_literal)) ;) })) })) (labeled_statement "LAB_000a02e0:\n            if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }" statement_identifier : (if_statement "if ((int)local_a0 < 1) {\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }" if (parenthesized_expression "((int)local_a0 < 1)" ( (binary_expression "(int)local_a0 < 1" (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') goto LAB_000a0bf2;\n            }" { (expression_statement "local_d0->iTop = p->nOp;" (assignment_expression "local_d0->iTop = p->nOp" (field_expression "local_d0->iTop" identifier -> field_identifier) = (field_expression "p->nOp" identifier -> field_identifier)) ;) (if_statement "if (db->mallocFailed == '\0') goto LAB_000a0bf2;" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;)) }) (else_clause "else {\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }" else (compound_statement "{\n              pWVar44 = (WhereLevel *)local_b8;\n              do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);\n              local_d0->iTop = p->nOp;\n              if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }\n            }" { (expression_statement "pWVar44 = (WhereLevel *)local_b8;" (assignment_expression "pWVar44 = (WhereLevel *)local_b8" identifier = (cast_expression "(WhereLevel *)local_b8" ( (type_descriptor "WhereLevel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              } while (pWVar44 != local_d0->a + (int)local_a0);" do (compound_statement "{\n                bVar14 = pWVar44->iFrom;\n                pTVar8 = pSrc->a[bVar14].pTab;\n                if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }\n                pWVar47 = pWVar44->pWLoop;\n                uVar16 = pWVar47->wsFlags;\n                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }\n                if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }\n                if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }\n                pWVar44 = pWVar44 + 1;\n              }" { (expression_statement "bVar14 = pWVar44->iFrom;" (assignment_expression "bVar14 = pWVar44->iFrom" identifier = (field_expression "pWVar44->iFrom" identifier -> field_identifier)) ;) (expression_statement "pTVar8 = pSrc->a[bVar14].pTab;" (assignment_expression "pTVar8 = pSrc->a[bVar14].pTab" identifier = (field_expression "pSrc->a[bVar14].pTab" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (pTVar8->pSchema == (Schema *)0x0) {\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }\n                else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }" if (parenthesized_expression "(pTVar8->pSchema == (Schema *)0x0)" ( (binary_expression "pTVar8->pSchema == (Schema *)0x0" (field_expression "pTVar8->pSchema" identifier -> field_identifier) == (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar57 = 0xc0;\n                  uVar58 = 0xbd;\n                  sVar60 = -0x10;\n                }" { (expression_statement "uVar57 = 0xc0;" (assignment_expression "uVar57 = 0xc0" identifier = number_literal) ;) (expression_statement "uVar58 = 0xbd;" (assignment_expression "uVar58 = 0xbd" identifier = number_literal) ;) (expression_statement "sVar60 = -0x10;" (assignment_expression "sVar60 = -0x10" identifier = number_literal) ;) }) (else_clause "else {\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }" else (compound_statement "{\n                  dequote = (Index *)0xa032f;\n                  iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);\n                  uVar57 = (undefined1)iVar17;\n                  uVar58 = (undefined1)((uint)iVar17 >> 8);\n                  sVar60 = (short)((uint)iVar17 >> 0x10);\n                }" { (expression_statement "dequote = (Index *)0xa032f;" (assignment_expression "dequote = (Index *)0xa032f" identifier = (cast_expression "(Index *)0xa032f" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema);" (assignment_expression "iVar17 = sqlite3SchemaToIndex(db,pTVar8->pSchema)" identifier = (call_expression "sqlite3SchemaToIndex(db,pTVar8->pSchema)" identifier (argument_list "(db,pTVar8->pSchema)" ( identifier , (field_expression "pTVar8->pSchema" identifier -> field_identifier) )))) ;) (expression_statement "uVar57 = (undefined1)iVar17;" (assignment_expression "uVar57 = (undefined1)iVar17" identifier = (cast_expression "(undefined1)iVar17" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar17 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar17 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar17 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar17 >> 8)" ( (binary_expression "(uint)iVar17 >> 8" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "sVar60 = (short)((uint)iVar17 >> 0x10);" (assignment_expression "sVar60 = (short)((uint)iVar17 >> 0x10)" identifier = (cast_expression "(short)((uint)iVar17 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((uint)iVar17 >> 0x10)" ( (binary_expression "(uint)iVar17 >> 0x10" (cast_expression "(uint)iVar17" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "pWVar47 = pWVar44->pWLoop;" (assignment_expression "pWVar47 = pWVar44->pWLoop" identifier = (field_expression "pWVar44->pWLoop" identifier -> field_identifier)) ;) (expression_statement "uVar16 = pWVar47->wsFlags;" (assignment_expression "uVar16 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) (if_statement "if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)) {\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }" if (parenthesized_expression "(((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0))" ( (binary_expression "((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (Select *)0x0)" (parenthesized_expression "((pTVar8->tabFlags & 2) == 0)" ( (binary_expression "(pTVar8->tabFlags & 2) == 0" (parenthesized_expression "(pTVar8->tabFlags & 2)" ( (binary_expression "pTVar8->tabFlags & 2" (field_expression "pTVar8->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(pTVar8->pSelect == (Select *)0x0)" ( (binary_expression "pTVar8->pSelect == (Select *)0x0" (field_expression "pTVar8->pSelect" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                  if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }\n                }" { (if_statement "if ((uVar16 & 0x400) == 0) {\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }\n                  else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }" if (parenthesized_expression "((uVar16 & 0x400) == 0)" ( (binary_expression "(uVar16 & 0x400) == 0" (parenthesized_expression "(uVar16 & 0x400)" ( (binary_expression "uVar16 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }\n                  }" { (if_statement "if (pTVar8->nModuleArg == 0) {\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }" if (parenthesized_expression "(pTVar8->nModuleArg == 0)" ( (binary_expression "pTVar8->nModuleArg == 0" (field_expression "pTVar8->nModuleArg" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n                      if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                    }" { (if_statement "if (((uVar16 & 0x40) == 0) && (uVar11 == 0)) {\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }\n                      else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }" if (parenthesized_expression "(((uVar16 & 0x40) == 0) && (uVar11 == 0))" ( (binary_expression "((uVar16 & 0x40) == 0) && (uVar11 == 0)" (parenthesized_expression "((uVar16 & 0x40) == 0)" ( (binary_expression "(uVar16 & 0x40) == 0" (parenthesized_expression "(uVar16 & 0x40)" ( (binary_expression "uVar16 & 0x40" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                        iVar43 = 0x6d;\n                        iVar17 = pSrc->a[bVar14].iCursor;\n                        if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }\n                        sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);\n                        if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }\n                        if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }\n                        uVar16 = pWVar47->wsFlags;\n                      }" { (expression_statement "iVar43 = 0x6d;" (assignment_expression "iVar43 = 0x6d" identifier = number_literal) ;) (expression_statement "iVar17 = pSrc->a[bVar14].iCursor;" (assignment_expression "iVar17 = pSrc->a[bVar14].iCursor" identifier = (field_expression "pSrc->a[bVar14].iCursor" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (local_d0->eOnePass != '\0') {\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }" if (parenthesized_expression "(local_d0->eOnePass != '\0')" ( (binary_expression "local_d0->eOnePass != '\0'" (field_expression "local_d0->eOnePass" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          local_d0->aiCurOnePass[0] = iVar17;\n                          iVar43 = 0x6e;\n                          iVar17 = pSrc->a[bVar14].iCursor;\n                        }" { (expression_statement "local_d0->aiCurOnePass[0] = iVar17;" (assignment_expression "local_d0->aiCurOnePass[0] = iVar17" (subscript_expression "local_d0->aiCurOnePass[0]" (field_expression "local_d0->aiCurOnePass" identifier -> field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "iVar43 = 0x6e;" (assignment_expression "iVar43 = 0x6e" identifier = number_literal) ;) (expression_statement "iVar17 = pSrc->a[bVar14].iCursor;" (assignment_expression "iVar17 = pSrc->a[bVar14].iCursor" identifier = (field_expression "pSrc->a[bVar14].iCursor" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) })) (expression_statement "sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43);" (call_expression "sqlite3OpenTable(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43)" identifier (argument_list "(pParse_00,iVar17,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8,iVar43)" ( identifier , identifier , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) , identifier , identifier ))) ;) (if_statement "if (((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)) {\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }" if (parenthesized_expression "(((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0))" ( (binary_expression "((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&\n                           ((pTVar8->tabFlags & 0x20) == 0)" (parenthesized_expression "((local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40))" ( (binary_expression "(local_d0->eOnePass == '\0') && (pTVar8->nCol < 0x40)" (parenthesized_expression "(local_d0->eOnePass == '\0')" ( (binary_expression "local_d0->eOnePass == '\0'" (field_expression "local_d0->eOnePass" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pTVar8->nCol < 0x40)" ( (binary_expression "pTVar8->nCol < 0x40" (field_expression "pTVar8->nCol" identifier -> field_identifier) < number_literal) ))) )) && (parenthesized_expression "((pTVar8->tabFlags & 0x20) == 0)" ( (binary_expression "(pTVar8->tabFlags & 0x20) == 0" (parenthesized_expression "(pTVar8->tabFlags & 0x20)" ( (binary_expression "pTVar8->tabFlags & 0x20" (field_expression "pTVar8->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          pBVar4 = &pSrc->a[bVar14].colUsed;\n                          uVar16 = (uint)*pBVar4;\n                          uVar18 = *(uint *)((int)pBVar4 + 4);\n                          pcVar46 = (char *)0x0;\n                          if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }\n                          sqlite3VdbeChangeP4(p,-1,pcVar46,-3);\n                        }" { (expression_statement "pBVar4 = &pSrc->a[bVar14].colUsed;" (assignment_expression "pBVar4 = &pSrc->a[bVar14].colUsed" identifier = (pointer_expression "&pSrc->a[bVar14].colUsed" & (field_expression "pSrc->a[bVar14].colUsed" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "uVar16 = (uint)*pBVar4;" (assignment_expression "uVar16 = (uint)*pBVar4" identifier = (binary_expression "(uint)*pBVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "uVar18 = *(uint *)((int)pBVar4 + 4);" (assignment_expression "uVar18 = *(uint *)((int)pBVar4 + 4)" identifier = (pointer_expression "*(uint *)((int)pBVar4 + 4)" * (cast_expression "(uint *)((int)pBVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pBVar4 + 4)" ( (binary_expression "(int)pBVar4 + 4" (cast_expression "(int)pBVar4" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pcVar46 = (char *)0x0;" (assignment_expression "pcVar46 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (uVar18 != 0 || uVar16 != 0) {\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }" if (parenthesized_expression "(uVar18 != 0 || uVar16 != 0)" ( (binary_expression "uVar18 != 0 || uVar16 != 0" (binary_expression "uVar18 != 0" identifier != number_literal) || (binary_expression "uVar16 != 0" identifier != number_literal)) )) (compound_statement "{\n                            pcVar46 = (char *)0x0;\n                            do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);\n                          }" { (expression_statement "pcVar46 = (char *)0x0;" (assignment_expression "pcVar46 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            } while (uVar18 != 0 || uVar16 != 0);" do (compound_statement "{\n                              uVar16 = uVar16 >> 1 | uVar18 << 0x1f;\n                              uVar18 = uVar18 >> 1;\n                              pcVar46 = pcVar46 + 1;\n                            }" { (expression_statement "uVar16 = uVar16 >> 1 | uVar18 << 0x1f;" (assignment_expression "uVar16 = uVar16 >> 1 | uVar18 << 0x1f" identifier = (binary_expression "uVar16 >> 1 | uVar18 << 0x1f" (binary_expression "uVar16 >> 1" identifier >> number_literal) | (binary_expression "uVar18 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar18 = uVar18 >> 1;" (assignment_expression "uVar18 = uVar18 >> 1" identifier = (binary_expression "uVar18 >> 1" identifier >> number_literal)) ;) (expression_statement "pcVar46 = pcVar46 + 1;" (assignment_expression "pcVar46 = pcVar46 + 1" identifier = (binary_expression "pcVar46 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar18 != 0 || uVar16 != 0)" ( (binary_expression "uVar18 != 0 || uVar16 != 0" (binary_expression "uVar18 != 0" identifier != number_literal) || (binary_expression "uVar16 != 0" identifier != number_literal)) )) ;) })) (expression_statement "sqlite3VdbeChangeP4(p,-1,pcVar46,-3);" (call_expression "sqlite3VdbeChangeP4(p,-1,pcVar46,-3)" identifier (argument_list "(p,-1,pcVar46,-3)" ( identifier , number_literal , identifier , number_literal ))) ;) })) (if_statement "if (0 < p->nOp) {\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }" if (parenthesized_expression "(0 < p->nOp)" ( (binary_expression "0 < p->nOp" number_literal < (field_expression "p->nOp" identifier -> field_identifier)) )) (compound_statement "{\n                          p->aOp[p->nOp + -1].p5 = (ushort)bVar42;\n                        }" { (expression_statement "p->aOp[p->nOp + -1].p5 = (ushort)bVar42;" (assignment_expression "p->aOp[p->nOp + -1].p5 = (ushort)bVar42" (field_expression "p->aOp[p->nOp + -1].p5" (subscript_expression "p->aOp[p->nOp + -1]" (field_expression "p->aOp" identifier -> field_identifier) [ (binary_expression "p->nOp + -1" (field_expression "p->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = (cast_expression "(ushort)bVar42" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) })) (expression_statement "uVar16 = pWVar47->wsFlags;" (assignment_expression "uVar16 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }) (else_clause "else {\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }" else (compound_statement "{\n                        sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);\n                        uVar16 = pWVar47->wsFlags;\n                      }" { (expression_statement "sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName);" (call_expression "sqlite3TableLock(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName)" identifier (argument_list "(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                         pTVar8->tnum,'\0',pTVar8->zName)" ( identifier , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) , (field_expression "pTVar8->tnum" identifier -> field_identifier) , (char_literal "'\0'" ' escape_sequence ') , (field_expression "pTVar8->zName" identifier -> field_identifier) ))) ;) (expression_statement "uVar16 = pWVar47->wsFlags;" (assignment_expression "uVar16 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }))) })) }) (else_clause "else {\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }" else (compound_statement "{\n                    for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }\n                    iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);\n                    sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);\n                    uVar16 = pWVar47->wsFlags;\n                  }" { (for_statement "for (zP4 = pTVar8->pVTable; (zP4 != (VTable *)0x0 && (db != zP4->db));\n                        zP4 = zP4->pNext) {\n                    }" for ( (assignment_expression "zP4 = pTVar8->pVTable" identifier = (field_expression "pTVar8->pVTable" identifier -> field_identifier)) ; (parenthesized_expression "(zP4 != (VTable *)0x0 && (db != zP4->db))" ( (binary_expression "zP4 != (VTable *)0x0 && (db != zP4->db)" (binary_expression "zP4 != (VTable *)0x0" identifier != (cast_expression "(VTable *)0x0" ( (type_descriptor "VTable *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(db != zP4->db)" ( (binary_expression "db != zP4->db" identifier != (field_expression "zP4->db" identifier -> field_identifier)) ))) )) ; (assignment_expression "zP4 = zP4->pNext" identifier = (field_expression "zP4->pNext" identifier -> field_identifier)) ) (compound_statement "{\n                    }" { })) (expression_statement "iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0);" (assignment_expression "iVar17 = sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(p,0xa3,pSrc->a[bVar14].iCursor,0,0)" identifier (argument_list "(p,0xa3,pSrc->a[bVar14].iCursor,0,0)" ( identifier , number_literal , (field_expression "pSrc->a[bVar14].iCursor" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier) , number_literal , number_literal )))) ;) (expression_statement "sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc);" (call_expression "sqlite3VdbeChangeP4(p,iVar17,(char *)zP4,-0xc)" identifier (argument_list "(p,iVar17,(char *)zP4,-0xc)" ( identifier , identifier , (cast_expression "(char *)zP4" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (expression_statement "uVar16 = pWVar47->wsFlags;" (assignment_expression "uVar16 = pWVar47->wsFlags" identifier = (field_expression "pWVar47->wsFlags" identifier -> field_identifier)) ;) }))) })) (if_statement "if ((uVar16 & 0x200) != 0) {\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }" if (parenthesized_expression "((uVar16 & 0x200) != 0)" ( (binary_expression "(uVar16 & 0x200) != 0" (parenthesized_expression "(uVar16 & 0x200)" ( (binary_expression "uVar16 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  pIVar50 = (pWVar47->u).btree.pIndex;\n                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }\n                }" { (expression_statement "pIVar50 = (pWVar47->u).btree.pIndex;" (assignment_expression "pIVar50 = (pWVar47->u).btree.pIndex" identifier = (field_expression "(pWVar47->u).btree.pIndex" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if ((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)) {\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }\n                  else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }" if (parenthesized_expression "((((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0))" ( (binary_expression "(((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)) ||\n                     (uVar11 == 0)" (parenthesized_expression "(((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2))" ( (binary_expression "((pTVar8->tabFlags & 0x20) == 0) || ((pIVar50->field_0x37 & 3) != 2)" (parenthesized_expression "((pTVar8->tabFlags & 0x20) == 0)" ( (binary_expression "(pTVar8->tabFlags & 0x20) == 0" (parenthesized_expression "(pTVar8->tabFlags & 0x20)" ( (binary_expression "pTVar8->tabFlags & 0x20" (field_expression "pTVar8->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "((pIVar50->field_0x37 & 3) != 2)" ( (binary_expression "(pIVar50->field_0x37 & 3) != 2" (parenthesized_expression "(pIVar50->field_0x37 & 3)" ( (binary_expression "pIVar50->field_0x37 & 3" (field_expression "pIVar50->field_0x37" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    pEVar38 = pOrderBy;\n                    if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }\n                    sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                    sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);\n                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }\n                  }" { (expression_statement "pEVar38 = pOrderBy;" (assignment_expression "pEVar38 = pOrderBy" identifier = identifier) ;) (if_statement "if (local_d0->eOnePass == '\0') {\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }\n                    else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }" if (parenthesized_expression "(local_d0->eOnePass == '\0')" ( (binary_expression "local_d0->eOnePass == '\0'" (field_expression "local_d0->eOnePass" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }\n                    }" { (if_statement "if ((uVar11 == 0) || (pOrderBy == (ExprList *)0x0)) {\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }\n                      else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }" if (parenthesized_expression "((uVar11 == 0) || (pOrderBy == (ExprList *)0x0))" ( (binary_expression "(uVar11 == 0) || (pOrderBy == (ExprList *)0x0)" (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(pOrderBy == (ExprList *)0x0)" ( (binary_expression "pOrderBy == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                        iVar17 = 0x6d;\n                        pEVar38 = (ExprList *)pParse_00->nTab;\n                        pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);\n                        pWVar44->iIdxCur = (int)pEVar38;\n                      }" { (expression_statement "iVar17 = 0x6d;" (assignment_expression "iVar17 = 0x6d" identifier = number_literal) ;) (expression_statement "pEVar38 = (ExprList *)pParse_00->nTab;" (assignment_expression "pEVar38 = (ExprList *)pParse_00->nTab" identifier = (cast_expression "(ExprList *)pParse_00->nTab" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse_00->nTab" identifier -> field_identifier))) ;) (expression_statement "pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1);" (assignment_expression "pParse_00->nTab = (int)((int)&pEVar38->nExpr + 1)" (field_expression "pParse_00->nTab" identifier -> field_identifier) = (cast_expression "(int)((int)&pEVar38->nExpr + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&pEVar38->nExpr + 1)" ( (binary_expression "(int)&pEVar38->nExpr + 1" (cast_expression "(int)&pEVar38->nExpr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar38->nExpr" & (field_expression "pEVar38->nExpr" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pWVar44->iIdxCur = (int)pEVar38;" (assignment_expression "pWVar44->iIdxCur = (int)pEVar38" (field_expression "pWVar44->iIdxCur" identifier -> field_identifier) = (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }" else (compound_statement "{\n                        iVar17 = 0x6c;\n                        pWVar44->iIdxCur = (int)pOrderBy;\n                      }" { (expression_statement "iVar17 = 0x6c;" (assignment_expression "iVar17 = 0x6c" identifier = number_literal) ;) (expression_statement "pWVar44->iIdxCur = (int)pOrderBy;" (assignment_expression "pWVar44->iIdxCur = (int)pOrderBy" (field_expression "pWVar44->iIdxCur" identifier -> field_identifier) = (cast_expression "(int)pOrderBy" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) }) (else_clause "else {\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }" else (compound_statement "{\n                      pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;\n                      if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }\n                      iVar17 = 0x6e;\n                      local_d0->aiCurOnePass[1] = (int)pEVar38;\n                      pWVar44->iIdxCur = (int)pEVar38;\n                    }" { (expression_statement "pIVar28 = (pSrc->a[bVar14].pTab)->pIndex;" (assignment_expression "pIVar28 = (pSrc->a[bVar14].pTab)->pIndex" identifier = (field_expression "(pSrc->a[bVar14].pTab)->pIndex" (parenthesized_expression "(pSrc->a[bVar14].pTab)" ( (field_expression "pSrc->a[bVar14].pTab" (subscript_expression "pSrc->a[bVar14]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier) )) -> field_identifier)) ;) (if_statement "if ((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)) {\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }" if (parenthesized_expression "((pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0))" ( (binary_expression "(pIVar50 != pIVar28) && (pIVar28 != (Index *)0x0)" (parenthesized_expression "(pIVar50 != pIVar28)" ( (binary_expression "pIVar50 != pIVar28" identifier != identifier) )) && (parenthesized_expression "(pIVar28 != (Index *)0x0)" ( (binary_expression "pIVar28 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n                        do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);\n                      }" { (do_statement "do {\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        } while (pIVar50 != pIVar28);" do (compound_statement "{\n                          pIVar28 = pIVar28->pNext;\n                          pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);\n                          if (pIVar28 == (Index *)0x0) break;\n                        }" { (expression_statement "pIVar28 = pIVar28->pNext;" (assignment_expression "pIVar28 = pIVar28->pNext" identifier = (field_expression "pIVar28->pNext" identifier -> field_identifier)) ;) (expression_statement "pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1);" (assignment_expression "pEVar38 = (ExprList *)((int)&pEVar38->nExpr + 1)" identifier = (cast_expression "(ExprList *)((int)&pEVar38->nExpr + 1)" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pEVar38->nExpr + 1)" ( (binary_expression "(int)&pEVar38->nExpr + 1" (cast_expression "(int)&pEVar38->nExpr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pEVar38->nExpr" & (field_expression "pEVar38->nExpr" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (pIVar28 == (Index *)0x0) break;" if (parenthesized_expression "(pIVar28 == (Index *)0x0)" ( (binary_expression "pIVar28 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(pIVar50 != pIVar28)" ( (binary_expression "pIVar50 != pIVar28" identifier != identifier) )) ;) })) (expression_statement "iVar17 = 0x6e;" (assignment_expression "iVar17 = 0x6e" identifier = number_literal) ;) (expression_statement "local_d0->aiCurOnePass[1] = (int)pEVar38;" (assignment_expression "local_d0->aiCurOnePass[1] = (int)pEVar38" (subscript_expression "local_d0->aiCurOnePass[1]" (field_expression "local_d0->aiCurOnePass" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pWVar44->iIdxCur = (int)pEVar38;" (assignment_expression "pWVar44->iIdxCur = (int)pEVar38" (field_expression "pWVar44->iIdxCur" identifier -> field_identifier) = (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) (expression_statement "sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));" (call_expression "sqlite3VdbeAddOp3(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)))" identifier (argument_list "(p,iVar17,(int)pEVar38,pIVar50->tnum,\n                                      CONCAT22(sVar60,CONCAT11(uVar58,uVar57)))" ( identifier , identifier , (cast_expression "(int)pEVar38" ( (type_descriptor "int" primitive_type) ) identifier) , (field_expression "pIVar50->tnum" identifier -> field_identifier) , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) ))) ;) (expression_statement "sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50);" (call_expression "sqlite3VdbeSetP4KeyInfo(pParse_00,pIVar50)" identifier (argument_list "(pParse_00,pIVar50)" ( identifier , identifier ))) ;) (if_statement "if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))) {\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }" if (parenthesized_expression "(((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp))))" ( (binary_expression "((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)) &&\n                       ((local_d0->eDistinct != '\x02' && (0 < p->nOp)))" (parenthesized_expression "((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0))" ( (binary_expression "(((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&\n                        ((local_d0->wctrlFlags & 1) == 0)" (parenthesized_expression "(((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0))" ( (binary_expression "((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)" (parenthesized_expression "((pWVar47->wsFlags & 0xf) != 0)" ( (binary_expression "(pWVar47->wsFlags & 0xf) != 0" (parenthesized_expression "(pWVar47->wsFlags & 0xf)" ( (binary_expression "pWVar47->wsFlags & 0xf" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "((pWVar47->wsFlags & 0x8002) == 0)" ( (binary_expression "(pWVar47->wsFlags & 0x8002) == 0" (parenthesized_expression "(pWVar47->wsFlags & 0x8002)" ( (binary_expression "pWVar47->wsFlags & 0x8002" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((local_d0->wctrlFlags & 1) == 0)" ( (binary_expression "(local_d0->wctrlFlags & 1) == 0" (parenthesized_expression "(local_d0->wctrlFlags & 1)" ( (binary_expression "local_d0->wctrlFlags & 1" (field_expression "local_d0->wctrlFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((local_d0->eDistinct != '\x02' && (0 < p->nOp)))" ( (parenthesized_expression "(local_d0->eDistinct != '\x02' && (0 < p->nOp))" ( (binary_expression "local_d0->eDistinct != '\x02' && (0 < p->nOp)" (binary_expression "local_d0->eDistinct != '\x02'" (field_expression "local_d0->eDistinct" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) && (parenthesized_expression "(0 < p->nOp)" ( (binary_expression "0 < p->nOp" number_literal < (field_expression "p->nOp" identifier -> field_identifier)) ))) )) ))) )) (compound_statement "{\n                      p->aOp[p->nOp + -1].p5 = 2;\n                    }" { (expression_statement "p->aOp[p->nOp + -1].p5 = 2;" (assignment_expression "p->aOp[p->nOp + -1].p5 = 2" (field_expression "p->aOp[p->nOp + -1].p5" (subscript_expression "p->aOp[p->nOp + -1]" (field_expression "p->aOp" identifier -> field_identifier) [ (binary_expression "p->nOp + -1" (field_expression "p->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) }) (else_clause "else {\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }" else (compound_statement "{\n                    pWVar44->iIdxCur = pWVar44->iTabCur;\n                  }" { (expression_statement "pWVar44->iIdxCur = pWVar44->iTabCur;" (assignment_expression "pWVar44->iIdxCur = pWVar44->iTabCur" (field_expression "pWVar44->iIdxCur" identifier -> field_identifier) = (field_expression "pWVar44->iTabCur" identifier -> field_identifier)) ;) }))) })) (if_statement "if (-1 < sVar60) {\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }" if (parenthesized_expression "(-1 < sVar60)" ( (binary_expression "-1 < sVar60" number_literal < identifier) )) (compound_statement "{\n                  dequote = (Index *)0xa0402;\n                  sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));\n                }" { (expression_statement "dequote = (Index *)0xa0402;" (assignment_expression "dequote = (Index *)0xa0402" identifier = (cast_expression "(Index *)0xa0402" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)));" (call_expression "sqlite3CodeVerifySchema(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)))" identifier (argument_list "(pParse_00,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)))" ( identifier , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) ))) ;) })) (expression_statement "pWVar44 = pWVar44 + 1;" (assignment_expression "pWVar44 = pWVar44 + 1" identifier = (binary_expression "pWVar44 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pWVar44 != local_d0->a + (int)local_a0)" ( (binary_expression "pWVar44 != local_d0->a + (int)local_a0" identifier != (binary_expression "local_d0->a + (int)local_a0" (field_expression "local_d0->a" identifier -> field_identifier) + (cast_expression "(int)local_a0" ( (type_descriptor "int" primitive_type) ) identifier))) )) ;) (expression_statement "local_d0->iTop = p->nOp;" (assignment_expression "local_d0->iTop = p->nOp" (field_expression "local_d0->iTop" identifier -> field_identifier) = (field_expression "p->nOp" identifier -> field_identifier)) ;) (if_statement "if (db->mallocFailed == '\0') {\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                local_88 = (Parse *)0x0;\n                do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);\n                goto LAB_000a0bf2;\n              }" { (expression_statement "local_88 = (Parse *)0x0;" (assignment_expression "local_88 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                } while (local_a0 != pPVar22);" do (compound_statement "{\n                  if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }\n                  pPVar22 = pParse_00->pToplevel;\n                  if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }\n                  if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }\n                  local_b8->cacheCtr = p->nOp;\n                  pPVar22 = (Parse *)((int)&local_88->db + 1);\n                  BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));\n                  local_d0->iContinue = local_b8->nMem;\n                  dequote = local_cc._4_4_;\n                  local_cc = BVar54;\n                  local_b8 = (Vdbe *)&local_b8->nStmtDefCons;\n                  local_88 = pPVar22;\n                }" { (if_statement "if ((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }" if (parenthesized_expression "((*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0)" ( (binary_expression "(*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0" (parenthesized_expression "(*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40)" ( (binary_expression "*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40" (pointer_expression "*(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25)" * (cast_expression "(byte *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25)" ( (binary_expression "*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25" (pointer_expression "*(int *)((int)&local_b8->iCurrentTime + 4)" * (cast_expression "(int *)((int)&local_b8->iCurrentTime + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_b8->iCurrentTime + 4)" ( (binary_expression "(int)&local_b8->iCurrentTime + 4" (cast_expression "(int)&local_b8->iCurrentTime" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b8->iCurrentTime" & (field_expression "local_b8->iCurrentTime" identifier -> field_identifier))) + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    bVar42 = (byte)local_b8->pc;\n                    p_00 = pParse_00->pVdbe;\n                    pIVar50 = (Index *)0x0;\n                    iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);\n                    pTVar8 = pSrc->a[bVar42].pTab;\n                    pWVar29 = (local_d0->sWC).a;\n                    pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);\n                    pWVar32 = pWVar29 + (local_d0->sWC).nTerm;\n                    local_c0 = 0;\n                    if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }\n                    pWVar47->nLTerm = (u16)local_c0;\n                    (pWVar47->u).btree.nEq = (u16)local_c0;\n                    pWVar47->wsFlags = 0x4241;\n                    uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);\n                    uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;\n                    uVar16 = uVar16 & uVar34;\n                    sVar6 = pTVar8->nCol;\n                    uVar27 = 0x3f;\n                    if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }\n                    if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }\n                    if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }\n                    pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);\n                    if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }\nLAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }\n                    if (db->mallocFailed != '\0') goto LAB_000a0bd0;\n                  }" { (expression_statement "bVar42 = (byte)local_b8->pc;" (assignment_expression "bVar42 = (byte)local_b8->pc" identifier = (cast_expression "(byte)local_b8->pc" ( (type_descriptor "byte" type_identifier) ) (field_expression "local_b8->pc" identifier -> field_identifier))) ;) (expression_statement "p_00 = pParse_00->pVdbe;" (assignment_expression "p_00 = pParse_00->pVdbe" identifier = (field_expression "pParse_00->pVdbe" identifier -> field_identifier)) ;) (expression_statement "pIVar50 = (Index *)0x0;" (assignment_expression "pIVar50 = (Index *)0x0" identifier = (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0);" (assignment_expression "iVar17 = sqlite3VdbeAddOp3(p_00,0x11,0,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0x11,0,0,0)" identifier (argument_list "(p_00,0x11,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "pTVar8 = pSrc->a[bVar42].pTab;" (assignment_expression "pTVar8 = pSrc->a[bVar42].pTab" identifier = (field_expression "pSrc->a[bVar42].pTab" (subscript_expression "pSrc->a[bVar42]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pWVar29 = (local_d0->sWC).a;" (assignment_expression "pWVar29 = (local_d0->sWC).a" identifier = (field_expression "(local_d0->sWC).a" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4);" (assignment_expression "pWVar47 = *(WhereLoop **)((int)&local_b8->iCurrentTime + 4)" identifier = (pointer_expression "*(WhereLoop **)((int)&local_b8->iCurrentTime + 4)" * (cast_expression "(WhereLoop **)((int)&local_b8->iCurrentTime + 4)" ( (type_descriptor "WhereLoop **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&local_b8->iCurrentTime + 4)" ( (binary_expression "(int)&local_b8->iCurrentTime + 4" (cast_expression "(int)&local_b8->iCurrentTime" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_b8->iCurrentTime" & (field_expression "local_b8->iCurrentTime" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pWVar32 = pWVar29 + (local_d0->sWC).nTerm;" (assignment_expression "pWVar32 = pWVar29 + (local_d0->sWC).nTerm" identifier = (binary_expression "pWVar29 + (local_d0->sWC).nTerm" identifier + (field_expression "(local_d0->sWC).nTerm" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (if_statement "if (pWVar29 < pWVar32) {\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }" if (parenthesized_expression "(pWVar29 < pWVar32)" ( (binary_expression "pWVar29 < pWVar32" identifier < identifier) )) (compound_statement "{\n                      bVar52 = false;\n                      uVar18 = 0;\n                      local_a8 = 0;\n                      local_74 = (Expr *)0x0;\n                      do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);\nLAB_000a0663:\n                      uVar18 = ~uVar18;\n                      uVar16 = ~local_a8 | 0x80000000;\n                    }" { (expression_statement "bVar52 = false;" (assignment_expression "bVar52 = false" identifier = false) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_74 = (Expr *)0x0;" (assignment_expression "local_74 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      } while (pWVar29 < pWVar32);" do (compound_statement "{\n                        while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }\n                        uVar16 = (pWVar29->u).leftColumn;\n                        uVar57 = 0;\n                        uVar58 = 0;\n                        sVar60 = 0;\n                        in_stack_ffffff28 = (Parse *)0x80000000;\n                        if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }\n                        if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }\n                        if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }\n                        bVar52 = true;\n                        pWVar29 = pWVar29 + 1;\n                      }" { (while_statement "while( true ) {\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }\n                          pIVar50 = local_cc._4_4_;\n                          iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                          if (iVar43 != 0) break;\nLAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;\n                          if (pWVar32 <= pWVar29) goto LAB_000a0663;\n                        }" { (if_statement "if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)) {\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }" if (parenthesized_expression "((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0))" ( (binary_expression "(*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              ) && ((pWVar29->wtFlags & 2) == 0)" (parenthesized_expression "(*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0\n                              )" ( (binary_expression "*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0" (binary_expression "*(int *)((int)&pWVar47->prereq + 4) == 0" (pointer_expression "*(int *)((int)&pWVar47->prereq + 4)" * (cast_expression "(int *)((int)&pWVar47->prereq + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar47->prereq + 4)" ( (binary_expression "(int)&pWVar47->prereq + 4" (cast_expression "(int)&pWVar47->prereq" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar47->prereq" & (field_expression "pWVar47->prereq" identifier -> field_identifier))) + number_literal) )))) == number_literal) && (binary_expression "(int)pWVar47->prereq == 0" (cast_expression "(int)pWVar47->prereq" ( (type_descriptor "int" primitive_type) ) (field_expression "pWVar47->prereq" identifier -> field_identifier)) == number_literal)) )) && (parenthesized_expression "((pWVar29->wtFlags & 2) == 0)" ( (binary_expression "(pWVar29->wtFlags & 2) == 0" (parenthesized_expression "(pWVar29->wtFlags & 2)" ( (binary_expression "pWVar29->wtFlags & 2" (field_expression "pWVar29->wtFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                            pEVar56 = pWVar29->pExpr;\n                            uVar57 = SUB41(pEVar56,0);\n                            uVar58 = (undefined1)((uint)pEVar56 >> 8);\n                            sVar60 = (short)((uint)pEVar56 >> 0x10);\n                            if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }\n                          }" { (expression_statement "pEVar56 = pWVar29->pExpr;" (assignment_expression "pEVar56 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) (expression_statement "uVar57 = SUB41(pEVar56,0);" (assignment_expression "uVar57 = SUB41(pEVar56,0)" identifier = (call_expression "SUB41(pEVar56,0)" identifier (argument_list "(pEVar56,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar58 = (undefined1)((uint)pEVar56 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)pEVar56 >> 8)" identifier = (call_expression "(undefined1)((uint)pEVar56 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)pEVar56 >> 8)" ( (binary_expression "(uint)pEVar56 >> 8" (cast_expression "(uint)pEVar56" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "sVar60 = (short)((uint)pEVar56 >> 0x10);" (assignment_expression "sVar60 = (short)((uint)pEVar56 >> 0x10)" identifier = (cast_expression "(short)((uint)pEVar56 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((uint)pEVar56 >> 0x10)" ( (binary_expression "(uint)pEVar56 >> 0x10" (cast_expression "(uint)pEVar56" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((pEVar56->flags & 1) == 0) {\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }" if (parenthesized_expression "((pEVar56->flags & 1) == 0)" ( (binary_expression "(pEVar56->flags & 1) == 0" (parenthesized_expression "(pEVar56->flags & 1)" ( (binary_expression "pEVar56->flags & 1" (field_expression "pEVar56->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                              w.eCode = '\x03';\n                              w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);\n                              w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;\n                              w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);\n                              dequote = (Index *)0xa0f43;\n                              walkExpr(&w,pEVar56);\n                              if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }\n                            }" { (expression_statement "w.eCode = '\x03';" (assignment_expression "w.eCode = '\x03'" (field_expression "w.eCode" identifier . field_identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7);" (assignment_expression "w.xExprCallback =\n                                   (_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(unaff_EDI + -0x70cb7)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x70cb7)" ( (binary_expression "unaff_EDI + -0x70cb7" identifier + number_literal) )))) ;) (expression_statement "w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor;" (assignment_expression "w.u = (anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor" (field_expression "w.u" identifier . field_identifier) = (cast_expression "(anon_union_4_14_c5524298_for_u)pSrc->a[bVar42].iCursor" ( (type_descriptor "anon_union_4_14_c5524298_for_u" type_identifier) ) (field_expression "pSrc->a[bVar42].iCursor" (subscript_expression "pSrc->a[bVar42]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347);" (assignment_expression "w.xSelectCallback =\n                                   (_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(unaff_EDI + -0x82347)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + -0x82347)" ( (binary_expression "unaff_EDI + -0x82347" identifier + number_literal) )))) ;) (expression_statement "dequote = (Index *)0xa0f43;" (assignment_expression "dequote = (Index *)0xa0f43" identifier = (cast_expression "(Index *)0xa0f43" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "walkExpr(&w,pEVar56);" (call_expression "walkExpr(&w,pEVar56)" identifier (argument_list "(&w,pEVar56)" ( (pointer_expression "&w" & identifier) , identifier ))) ;) (if_statement "if (w.eCode != '\0') {\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }" if (parenthesized_expression "(w.eCode != '\0')" ( (binary_expression "w.eCode != '\0'" (field_expression "w.eCode" identifier . field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                                pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);\n                                local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);\n                              }" { (expression_statement "pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0);" (assignment_expression "pEVar56 = exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0)" identifier = (call_expression "exprDup(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0)" identifier (argument_list "(pParse_00->db,\n                                                  (Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0\n                                                  ,(u8 **)0x0)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , (cast_expression "(Expr *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) , number_literal , (cast_expression "(u8 **)0x0" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) )))) ;) (expression_statement "local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56);" (assignment_expression "local_74 = sqlite3ExprAnd(pParse_00->db,local_74,pEVar56)" identifier = (call_expression "sqlite3ExprAnd(pParse_00->db,local_74,pEVar56)" identifier (argument_list "(pParse_00->db,local_74,pEVar56)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , identifier , identifier )))) ;) })) })) })) (expression_statement "pIVar50 = local_cc._4_4_;" (assignment_expression "pIVar50 = local_cc._4_4_" identifier = (field_expression "local_cc._4_4_" identifier . field_identifier)) ;) (expression_statement "iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);" (assignment_expression "iVar43 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc)" identifier = (call_expression "termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc)" identifier (argument_list "(pWVar29,pSrc->a + bVar42,local_cc)" ( identifier , (binary_expression "pSrc->a + bVar42" (field_expression "pSrc->a" identifier -> field_identifier) + identifier) , identifier )))) ;) (if_statement "if (iVar43 != 0) break;" if (parenthesized_expression "(iVar43 != 0)" ( (binary_expression "iVar43 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a05b6:\n                          pWVar29 = pWVar29 + 1;" statement_identifier : (expression_statement "pWVar29 = pWVar29 + 1;" (assignment_expression "pWVar29 = pWVar29 + 1" identifier = (binary_expression "pWVar29 + 1" identifier + number_literal)) ;)) (if_statement "if (pWVar32 <= pWVar29) goto LAB_000a0663;" if (parenthesized_expression "(pWVar32 <= pWVar29)" ( (binary_expression "pWVar32 <= pWVar29" identifier <= identifier) )) (goto_statement "goto LAB_000a0663;" goto statement_identifier ;)) })) (expression_statement "uVar16 = (pWVar29->u).leftColumn;" (assignment_expression "uVar16 = (pWVar29->u).leftColumn" identifier = (field_expression "(pWVar29->u).leftColumn" (parenthesized_expression "(pWVar29->u)" ( (field_expression "pWVar29->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar57 = 0;" (assignment_expression "uVar57 = 0" identifier = number_literal) ;) (expression_statement "uVar58 = 0;" (assignment_expression "uVar58 = 0" identifier = number_literal) ;) (expression_statement "sVar60 = 0;" (assignment_expression "sVar60 = 0" identifier = number_literal) ;) (expression_statement "in_stack_ffffff28 = (Parse *)0x80000000;" (assignment_expression "in_stack_ffffff28 = (Parse *)0x80000000" identifier = (cast_expression "(Parse *)0x80000000" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((int)uVar16 < 0x40) {\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }" if (parenthesized_expression "((int)uVar16 < 0x40)" ( (binary_expression "(int)uVar16 < 0x40" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          bVar14 = (byte)uVar16 & 0x1f;\n                          pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));\n                          pPVar22 = pPVar21;\n                          in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);\n                          if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }\n                          uVar57 = SUB41(pPVar22,0);\n                          uVar58 = (undefined1)((uint)pPVar22 >> 8);\n                          sVar60 = (short)((uint)pPVar22 >> 0x10);\n                        }" { (expression_statement "bVar14 = (byte)uVar16 & 0x1f;" (assignment_expression "bVar14 = (byte)uVar16 & 0x1f" identifier = (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f));" (assignment_expression "pPVar21 = (Parse *)(1 << ((byte)uVar16 & 0x1f))" identifier = (cast_expression "(Parse *)(1 << ((byte)uVar16 & 0x1f))" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(1 << ((byte)uVar16 & 0x1f))" ( (binary_expression "1 << ((byte)uVar16 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar16 & 0x1f)" ( (binary_expression "(byte)uVar16 & 0x1f" (cast_expression "(byte)uVar16" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))) )))) ;) (expression_statement "pPVar22 = pPVar21;" (assignment_expression "pPVar22 = pPVar21" identifier = identifier) ;) (expression_statement "in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14);" (assignment_expression "in_stack_ffffff28 = (Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14)" identifier = (cast_expression "(Parse *)(0 << bVar14 | 1U >> 0x20 - bVar14)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(0 << bVar14 | 1U >> 0x20 - bVar14)" ( (binary_expression "0 << bVar14 | 1U >> 0x20 - bVar14" (binary_expression "0 << bVar14" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar14" number_literal >> (binary_expression "0x20 - bVar14" number_literal - identifier))) )))) ;) (if_statement "if ((uVar16 & 0x20) != 0) {\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }" if (parenthesized_expression "((uVar16 & 0x20) != 0)" ( (binary_expression "(uVar16 & 0x20) != 0" (parenthesized_expression "(uVar16 & 0x20)" ( (binary_expression "uVar16 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            pPVar22 = (Parse *)0x0;\n                            in_stack_ffffff28 = pPVar21;\n                          }" { (expression_statement "pPVar22 = (Parse *)0x0;" (assignment_expression "pPVar22 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "in_stack_ffffff28 = pPVar21;" (assignment_expression "in_stack_ffffff28 = pPVar21" identifier = identifier) ;) })) (expression_statement "uVar57 = SUB41(pPVar22,0);" (assignment_expression "uVar57 = SUB41(pPVar22,0)" identifier = (call_expression "SUB41(pPVar22,0)" identifier (argument_list "(pPVar22,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar58 = (undefined1)((uint)pPVar22 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)pPVar22 >> 8)" identifier = (call_expression "(undefined1)((uint)pPVar22 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)pPVar22 >> 8)" ( (binary_expression "(uint)pPVar22 >> 8" (cast_expression "(uint)pPVar22" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "sVar60 = (short)((uint)pPVar22 >> 0x10);" (assignment_expression "sVar60 = (short)((uint)pPVar22 >> 0x10)" identifier = (cast_expression "(short)((uint)pPVar22 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((uint)pPVar22 >> 0x10)" ( (binary_expression "(uint)pPVar22 >> 0x10" (cast_expression "(uint)pPVar22" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (if_statement "if (!bVar52) {\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }" if (parenthesized_expression "(!bVar52)" ( (unary_expression "!bVar52" ! identifier) )) (compound_statement "{\n                          dequote = (Index *)pTVar8->aCol[uVar16].zName;\n                          pIVar50 = (Index *)(unaff_EDI + 0x59c3e);\n                          sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);\n                        }" { (expression_statement "dequote = (Index *)pTVar8->aCol[uVar16].zName;" (assignment_expression "dequote = (Index *)pTVar8->aCol[uVar16].zName" identifier = (cast_expression "(Index *)pTVar8->aCol[uVar16].zName" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTVar8->aCol[uVar16].zName" (subscript_expression "pTVar8->aCol[uVar16]" (field_expression "pTVar8->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "pIVar50 = (Index *)(unaff_EDI + 0x59c3e);" (assignment_expression "pIVar50 = (Index *)(unaff_EDI + 0x59c3e)" identifier = (cast_expression "(Index *)(unaff_EDI + 0x59c3e)" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x59c3e)" ( (binary_expression "unaff_EDI + 0x59c3e" identifier + number_literal) )))) ;) (expression_statement "sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName);" (call_expression "sqlite3_log(0x11c,(char *)pIVar50,pTVar8->zName)" identifier (argument_list "(0x11c,(char *)pIVar50,pTVar8->zName)" ( number_literal , (cast_expression "(char *)pIVar50" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pTVar8->zName" identifier -> field_identifier) ))) ;) })) (if_statement "if ((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0) {\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }" if (parenthesized_expression "((local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0)" ( (binary_expression "(local_a8 & (uint)in_stack_ffffff28) == 0 &&\n                            (CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0" (binary_expression "(local_a8 & (uint)in_stack_ffffff28) == 0" (parenthesized_expression "(local_a8 & (uint)in_stack_ffffff28)" ( (binary_expression "local_a8 & (uint)in_stack_ffffff28" identifier & (cast_expression "(uint)in_stack_ffffff28" ( (type_descriptor "uint" type_identifier) ) identifier)) )) == number_literal) && (binary_expression "(CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18) == 0" (parenthesized_expression "(CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18)" ( (binary_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57)) & uVar18" (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) & identifier) )) == number_literal)) )) (compound_statement "{\n                          iVar43 = local_c0 + 1;\n                          if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }\n                          bVar52 = true;\n                          pWVar47->aLTerm[local_c0] = pWVar29;\n                          local_a8 = local_a8 | (uint)in_stack_ffffff28;\n                          uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                          local_c0 = iVar43;\n                          goto LAB_000a05b6;\n                        }" { (expression_statement "iVar43 = local_c0 + 1;" (assignment_expression "iVar43 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (if_statement "if ((int)(uint)pWVar47->nLSlot < iVar43) {\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }" if (parenthesized_expression "((int)(uint)pWVar47->nLSlot < iVar43)" ( (binary_expression "(int)(uint)pWVar47->nLSlot < iVar43" (cast_expression "(int)(uint)pWVar47->nLSlot" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pWVar47->nLSlot" ( (type_descriptor "uint" type_identifier) ) (field_expression "pWVar47->nLSlot" identifier -> field_identifier))) < identifier) )) (compound_statement "{\n                            dequote = (Index *)0xa058e;\n                            iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);\n                            if (iVar40 != 0) goto LAB_000a0ba5;\n                          }" { (expression_statement "dequote = (Index *)0xa058e;" (assignment_expression "dequote = (Index *)0xa058e" identifier = (cast_expression "(Index *)0xa058e" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43);" (assignment_expression "iVar40 = whereLoopResize(pParse_00->db,pWVar47,iVar43)" identifier = (call_expression "whereLoopResize(pParse_00->db,pWVar47,iVar43)" identifier (argument_list "(pParse_00->db,pWVar47,iVar43)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , identifier , identifier )))) ;) (if_statement "if (iVar40 != 0) goto LAB_000a0ba5;" if (parenthesized_expression "(iVar40 != 0)" ( (binary_expression "iVar40 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a0ba5;" goto statement_identifier ;)) })) (expression_statement "bVar52 = true;" (assignment_expression "bVar52 = true" identifier = true) ;) (expression_statement "pWVar47->aLTerm[local_c0] = pWVar29;" (assignment_expression "pWVar47->aLTerm[local_c0] = pWVar29" (subscript_expression "pWVar47->aLTerm[local_c0]" (field_expression "pWVar47->aLTerm" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "local_a8 = local_a8 | (uint)in_stack_ffffff28;" (assignment_expression "local_a8 = local_a8 | (uint)in_stack_ffffff28" identifier = (binary_expression "local_a8 | (uint)in_stack_ffffff28" identifier | (cast_expression "(uint)in_stack_ffffff28" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57));" (assignment_expression "uVar18 = uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier = (binary_expression "uVar18 | CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier | (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))))) ;) (expression_statement "local_c0 = iVar43;" (assignment_expression "local_c0 = iVar43" identifier = identifier) ;) (goto_statement "goto LAB_000a05b6;" goto statement_identifier ;) })) (expression_statement "bVar52 = true;" (assignment_expression "bVar52 = true" identifier = true) ;) (expression_statement "pWVar29 = pWVar29 + 1;" (assignment_expression "pWVar29 = pWVar29 + 1" identifier = (binary_expression "pWVar29 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pWVar29 < pWVar32)" ( (binary_expression "pWVar29 < pWVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0663:\n                      uVar18 = ~uVar18;" statement_identifier : (expression_statement "uVar18 = ~uVar18;" (assignment_expression "uVar18 = ~uVar18" identifier = (unary_expression "~uVar18" ~ identifier)) ;)) (expression_statement "uVar16 = ~local_a8 | 0x80000000;" (assignment_expression "uVar16 = ~local_a8 | 0x80000000" identifier = (binary_expression "~local_a8 | 0x80000000" (unary_expression "~local_a8" ~ identifier) | number_literal)) ;) }) (else_clause "else {\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }" else (compound_statement "{\n                      uVar18 = 0xffffffff;\n                      uVar16 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = (Expr *)0x0;\n                    }" { (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar16 = 0xffffffff;" (assignment_expression "uVar16 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c0._0_2_ = 0;" (assignment_expression "local_c0._0_2_ = 0" (field_expression "local_c0._0_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_74 = (Expr *)0x0;" (assignment_expression "local_74 = (Expr *)0x0" identifier = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "pWVar47->nLTerm = (u16)local_c0;" (assignment_expression "pWVar47->nLTerm = (u16)local_c0" (field_expression "pWVar47->nLTerm" identifier -> field_identifier) = (cast_expression "(u16)local_c0" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "(pWVar47->u).btree.nEq = (u16)local_c0;" (assignment_expression "(pWVar47->u).btree.nEq = (u16)local_c0" (field_expression "(pWVar47->u).btree.nEq" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(u16)local_c0" ( (type_descriptor "u16" type_identifier) ) identifier)) ;) (expression_statement "pWVar47->wsFlags = 0x4241;" (assignment_expression "pWVar47->wsFlags = 0x4241" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = number_literal) ;) (expression_statement "uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4);" (assignment_expression "uVar34 = *(uint *)((int)&pSrc->a[bVar42].colUsed + 4)" identifier = (pointer_expression "*(uint *)((int)&pSrc->a[bVar42].colUsed + 4)" * (cast_expression "(uint *)((int)&pSrc->a[bVar42].colUsed + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSrc->a[bVar42].colUsed + 4)" ( (binary_expression "(int)&pSrc->a[bVar42].colUsed + 4" (cast_expression "(int)&pSrc->a[bVar42].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSrc->a[bVar42].colUsed" & (field_expression "pSrc->a[bVar42].colUsed" (subscript_expression "pSrc->a[bVar42]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed;" (assignment_expression "uVar18 = uVar18 & (uint)pSrc->a[bVar42].colUsed" identifier = (binary_expression "uVar18 & (uint)pSrc->a[bVar42].colUsed" identifier & (cast_expression "(uint)pSrc->a[bVar42].colUsed" ( (type_descriptor "uint" type_identifier) ) (field_expression "pSrc->a[bVar42].colUsed" (subscript_expression "pSrc->a[bVar42]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier)))) ;) (expression_statement "uVar16 = uVar16 & uVar34;" (assignment_expression "uVar16 = uVar16 & uVar34" identifier = (binary_expression "uVar16 & uVar34" identifier & identifier)) ;) (expression_statement "sVar6 = pTVar8->nCol;" (assignment_expression "sVar6 = pTVar8->nCol" identifier = (field_expression "pTVar8->nCol" identifier -> field_identifier)) ;) (expression_statement "uVar27 = 0x3f;" (assignment_expression "uVar27 = 0x3f" identifier = number_literal) ;) (if_statement "if (sVar6 < 0x40) {\n                      uVar27 = (int)sVar6;\n                    }" if (parenthesized_expression "(sVar6 < 0x40)" ( (binary_expression "sVar6 < 0x40" identifier < number_literal) )) (compound_statement "{\n                      uVar27 = (int)sVar6;\n                    }" { (expression_statement "uVar27 = (int)sVar6;" (assignment_expression "uVar27 = (int)sVar6" identifier = (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (0 < sVar6) {\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }" if (parenthesized_expression "(0 < sVar6)" ( (binary_expression "0 < sVar6" number_literal < identifier) )) (compound_statement "{\n                      uVar57 = (undefined1)uVar34;\n                      uVar58 = (undefined1)(uVar34 >> 8);\n                      sVar60 = (short)(uVar34 >> 0x10);\n                      uVar35 = 0;\n                      do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);\n                    }" { (expression_statement "uVar57 = (undefined1)uVar34;" (assignment_expression "uVar57 = (undefined1)uVar34" identifier = (cast_expression "(undefined1)uVar34" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)(uVar34 >> 8);" (assignment_expression "uVar58 = (undefined1)(uVar34 >> 8)" identifier = (call_expression "(undefined1)(uVar34 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar34 >> 8)" ( (binary_expression "uVar34 >> 8" identifier >> number_literal) )))) ;) (expression_statement "sVar60 = (short)(uVar34 >> 0x10);" (assignment_expression "sVar60 = (short)(uVar34 >> 0x10)" identifier = (cast_expression "(short)(uVar34 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uVar34 >> 0x10)" ( (binary_expression "uVar34 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "uVar35 = 0;" (assignment_expression "uVar35 = 0" identifier = number_literal) ;) (do_statement "do {\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      } while (uVar27 != uVar35);" do (compound_statement "{\n                        bVar14 = (byte)uVar35 & 0x1f;\n                        uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                        if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);\n                        uVar35 = uVar35 + 1;\n                      }" { (expression_statement "bVar14 = (byte)uVar35 & 0x1f;" (assignment_expression "bVar14 = (byte)uVar35 & 0x1f" identifier = (binary_expression "(byte)uVar35 & 0x1f" (cast_expression "(byte)uVar35" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;" (assignment_expression "uVar41 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14" identifier = (binary_expression "uVar18 >> bVar14 | uVar16 << 0x20 - bVar14" (binary_expression "uVar18 >> bVar14" identifier >> identifier) | (binary_expression "uVar16 << 0x20 - bVar14" identifier << (binary_expression "0x20 - bVar14" number_literal - identifier)))) ;) (if_statement "if ((uVar35 & 0x20) != 0) {\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }" if (parenthesized_expression "((uVar35 & 0x20) != 0)" ( (binary_expression "(uVar35 & 0x20) != 0" (parenthesized_expression "(uVar35 & 0x20)" ( (binary_expression "uVar35 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);\n                        }" { (expression_statement "uVar41 = uVar16 >> ((byte)uVar35 & 0x1f);" (assignment_expression "uVar41 = uVar16 >> ((byte)uVar35 & 0x1f)" identifier = (binary_expression "uVar16 >> ((byte)uVar35 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar35 & 0x1f)" ( (binary_expression "(byte)uVar35 & 0x1f" (cast_expression "(byte)uVar35" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0);" (assignment_expression "local_c0 = (local_c0 + 1) - (uint)((uVar41 & 1) == 0)" identifier = (binary_expression "(local_c0 + 1) - (uint)((uVar41 & 1) == 0)" (parenthesized_expression "(local_c0 + 1)" ( (binary_expression "local_c0 + 1" identifier + number_literal) )) - (call_expression "(uint)((uVar41 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar41 & 1) == 0)" ( (binary_expression "(uVar41 & 1) == 0" (parenthesized_expression "(uVar41 & 1)" ( (binary_expression "uVar41 & 1" identifier & number_literal) )) == number_literal) ))))) ;) (expression_statement "uVar35 = uVar35 + 1;" (assignment_expression "uVar35 = uVar35 + 1" identifier = (binary_expression "uVar35 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar27 != uVar35)" ( (binary_expression "uVar27 != uVar35" identifier != identifier) )) ;) })) (if_statement "if ((int)uVar34 < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }" if (parenthesized_expression "((int)uVar34 < 0)" ( (binary_expression "(int)uVar34 < 0" (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                      local_c0 = local_c0 + -0x3f + (int)sVar6;\n                    }" { (expression_statement "local_c0 = local_c0 + -0x3f + (int)sVar6;" (assignment_expression "local_c0 = local_c0 + -0x3f + (int)sVar6" identifier = (binary_expression "local_c0 + -0x3f + (int)sVar6" (binary_expression "local_c0 + -0x3f" identifier + number_literal) + (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName);" (assignment_expression "pIVar50 = sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName)" identifier = (call_expression "sqlite3AllocateIndexObject\n                                        (pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName)" identifier (argument_list "(pParse_00->db,(u16)local_c0 + 1,(int)&w,&pIVar50->zName)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , (binary_expression "(u16)local_c0 + 1" (cast_expression "(u16)local_c0" ( (type_descriptor "u16" type_identifier) ) identifier) + number_literal) , (cast_expression "(int)&w" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&w" & identifier)) , (pointer_expression "&pIVar50->zName" & (field_expression "pIVar50->zName" identifier -> field_identifier)) )))) ;) (if_statement "if (pIVar50 != (Index *)0x0) {\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }" if (parenthesized_expression "(pIVar50 != (Index *)0x0)" ( (binary_expression "pIVar50 != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar43 = 0;\n                      uVar57 = 0;\n                      uVar58 = 0;\n                      uVar59 = 0;\n                      (pWVar47->u).btree.pIndex = pIVar50;\n                      pIVar50->zName = (char *)(unaff_EDI + 0x59c58);\n                      pIVar50->pTable = pTVar8;\n                      pWVar29 = (local_d0->sWC).a;\n                      if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      piVar49 = pIVar50->aiColumn;\n                      if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }\n                      if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }\n                      *piVar45 = -1;\n                      *(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;\n                      p1 = (Vdbe *)pPVar22->nTab;\n                      pPVar22->nTab = (int)((int)&p1->db + 1);\n                      local_b8->pNext = p1;\n                      pParse_00 = pPVar22;\n                      sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);\n                      sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);\n                      bVar42 = (byte)local_b8->pc;\n                      pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }\n                      iVar23 = 0;\n                      if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }\n                      if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }\n                      iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);\n                      sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);\n                      if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }\n                      if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }\n                      if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }\n                      iVar43 = p_00->nOp;\n                      if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }\n                      if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }\n                      pOVar26->p2 = iVar43;\n                      iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));\n                      if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }\n                      iVar43 = p_00->nOp + -1;\n                      if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }\n                      pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                      if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }\n                      pOVar26->p2 = p_00->nOp;\n                    }" { (expression_statement "iVar43 = 0;" (assignment_expression "iVar43 = 0" identifier = number_literal) ;) (expression_statement "uVar57 = 0;" (assignment_expression "uVar57 = 0" identifier = number_literal) ;) (expression_statement "uVar58 = 0;" (assignment_expression "uVar58 = 0" identifier = number_literal) ;) (expression_statement "uVar59 = 0;" (assignment_expression "uVar59 = 0" identifier = number_literal) ;) (expression_statement "(pWVar47->u).btree.pIndex = pIVar50;" (assignment_expression "(pWVar47->u).btree.pIndex = pIVar50" (field_expression "(pWVar47->u).btree.pIndex" (field_expression "(pWVar47->u).btree" (parenthesized_expression "(pWVar47->u)" ( (field_expression "pWVar47->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pIVar50->zName = (char *)(unaff_EDI + 0x59c58);" (assignment_expression "pIVar50->zName = (char *)(unaff_EDI + 0x59c58)" (field_expression "pIVar50->zName" identifier -> field_identifier) = (cast_expression "(char *)(unaff_EDI + 0x59c58)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x59c58)" ( (binary_expression "unaff_EDI + 0x59c58" identifier + number_literal) )))) ;) (expression_statement "pIVar50->pTable = pTVar8;" (assignment_expression "pIVar50->pTable = pTVar8" (field_expression "pIVar50->pTable" identifier -> field_identifier) = identifier) ;) (expression_statement "pWVar29 = (local_d0->sWC).a;" (assignment_expression "pWVar29 = (local_d0->sWC).a" identifier = (field_expression "(local_d0->sWC).a" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pWVar29 < pWVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }\n                      else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }" if (parenthesized_expression "(pWVar29 < pWVar32)" ( (binary_expression "pWVar29 < pWVar32" identifier < identifier) )) (compound_statement "{\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);\nLAB_000a0858:\n                        iVar23 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar23;\n                        uVar58 = (undefined1)((uint)iVar23 >> 8);\n                        uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                        pPVar22 = pParse_00;\n                      }" { (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (do_statement "do {\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        } while (pWVar29 < pWVar32);" do (compound_statement "{\n                          while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }\n                          uVar35 = (pWVar29->u).leftColumn;\n                          uVar34 = 0;\n                          uVar41 = 0x80000000;\n                          if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }\n                          if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;\n                          uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;\n                          uVar57 = (undefined1)uVar34;\n                          uVar58 = (undefined1)(uVar34 >> 8);\n                          uVar59 = (undefined2)(uVar34 >> 0x10);\n                          local_70 = (i16)uVar35;\n                          pEVar56 = pWVar29->pExpr;\n                          local_78 = local_78 | uVar41;\n                          pIVar50->aiColumn[iVar43] = local_70;\n                          dequote = (Index *)0xa082b;\n                          pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);\n                          pcVar46 = &UNK_00064bb9 + unaff_EDI;\n                          if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }\n                          iVar40 = iVar40 + 2;\n                          pWVar29 = pWVar29 + 1;\n                          pIVar50->azColl[iVar43] = pcVar46;\n                          iVar43 = iVar43 + 1;\n                        }" { (while_statement "while( true ) {\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            iVar40 = iVar43 * 2;\n                            iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);\n                            if (iVar23 != 0) break;\nLAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;\n                            if (pWVar32 <= pWVar29) goto LAB_000a0858;\n                          }" { (expression_statement "iVar40 = iVar43 * 2;" (assignment_expression "iVar40 = iVar43 * 2" identifier = (binary_expression "iVar43 * 2" identifier * number_literal)) ;) (expression_statement "iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc);" (assignment_expression "iVar23 = termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc)" identifier = (call_expression "termCanDriveIndex(pWVar29,pSrc->a + bVar42,local_cc)" identifier (argument_list "(pWVar29,pSrc->a + bVar42,local_cc)" ( identifier , (binary_expression "pSrc->a + bVar42" (field_expression "pSrc->a" identifier -> field_identifier) + identifier) , identifier )))) ;) (if_statement "if (iVar23 != 0) break;" if (parenthesized_expression "(iVar23 != 0)" ( (binary_expression "iVar23 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a07a0:\n                            pWVar29 = pWVar29 + 1;" statement_identifier : (expression_statement "pWVar29 = pWVar29 + 1;" (assignment_expression "pWVar29 = pWVar29 + 1" identifier = (binary_expression "pWVar29 + 1" identifier + number_literal)) ;)) (if_statement "if (pWVar32 <= pWVar29) goto LAB_000a0858;" if (parenthesized_expression "(pWVar32 <= pWVar29)" ( (binary_expression "pWVar32 <= pWVar29" identifier <= identifier) )) (goto_statement "goto LAB_000a0858;" goto statement_identifier ;)) })) (expression_statement "uVar35 = (pWVar29->u).leftColumn;" (assignment_expression "uVar35 = (pWVar29->u).leftColumn" identifier = (field_expression "(pWVar29->u).leftColumn" (parenthesized_expression "(pWVar29->u)" ( (field_expression "pWVar29->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (expression_statement "uVar41 = 0x80000000;" (assignment_expression "uVar41 = 0x80000000" identifier = number_literal) ;) (if_statement "if ((int)uVar35 < 0x40) {\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }" if (parenthesized_expression "((int)uVar35 < 0x40)" ( (binary_expression "(int)uVar35 < 0x40" (cast_expression "(int)uVar35" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                            bVar52 = (uVar35 & 0x20) == 0;\n                            uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);\n                            uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);\n                          }" { (expression_statement "bVar52 = (uVar35 & 0x20) == 0;" (assignment_expression "bVar52 = (uVar35 & 0x20) == 0" identifier = (binary_expression "(uVar35 & 0x20) == 0" (parenthesized_expression "(uVar35 & 0x20)" ( (binary_expression "uVar35 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f);" (assignment_expression "uVar41 = (uint)!bVar52 << ((byte)uVar35 & 0x1f)" identifier = (binary_expression "(uint)!bVar52 << ((byte)uVar35 & 0x1f)" (cast_expression "(uint)!bVar52" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar52" ! identifier)) << (parenthesized_expression "((byte)uVar35 & 0x1f)" ( (binary_expression "(byte)uVar35 & 0x1f" (cast_expression "(byte)uVar35" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f);" (assignment_expression "uVar34 = (uint)bVar52 << ((byte)uVar35 & 0x1f)" identifier = (binary_expression "(uint)bVar52 << ((byte)uVar35 & 0x1f)" (cast_expression "(uint)bVar52" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar35 & 0x1f)" ( (binary_expression "(byte)uVar35 & 0x1f" (cast_expression "(byte)uVar35" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)\n                          goto LAB_000a07a0;" if (parenthesized_expression "((local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0)" ( (binary_expression "(local_78 & uVar41) != 0 ||\n                              (CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0" (binary_expression "(local_78 & uVar41) != 0" (parenthesized_expression "(local_78 & uVar41)" ( (binary_expression "local_78 & uVar41" identifier & identifier) )) != number_literal) || (binary_expression "(CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34) != 0" (parenthesized_expression "(CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34)" ( (binary_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) & uVar34" (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) & identifier) )) != number_literal)) )) (goto_statement "goto LAB_000a07a0;" goto statement_identifier ;)) (expression_statement "uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34;" (assignment_expression "uVar34 = CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34" identifier = (binary_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57)) | uVar34" (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) | identifier)) ;) (expression_statement "uVar57 = (undefined1)uVar34;" (assignment_expression "uVar57 = (undefined1)uVar34" identifier = (cast_expression "(undefined1)uVar34" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)(uVar34 >> 8);" (assignment_expression "uVar58 = (undefined1)(uVar34 >> 8)" identifier = (call_expression "(undefined1)(uVar34 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar34 >> 8)" ( (binary_expression "uVar34 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)(uVar34 >> 0x10);" (assignment_expression "uVar59 = (undefined2)(uVar34 >> 0x10)" identifier = (call_expression "(undefined2)(uVar34 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar34 >> 0x10)" ( (binary_expression "uVar34 >> 0x10" identifier >> number_literal) )))) ;) (expression_statement "local_70 = (i16)uVar35;" (assignment_expression "local_70 = (i16)uVar35" identifier = (cast_expression "(i16)uVar35" ( (type_descriptor "i16" type_identifier) ) identifier)) ;) (expression_statement "pEVar56 = pWVar29->pExpr;" (assignment_expression "pEVar56 = pWVar29->pExpr" identifier = (field_expression "pWVar29->pExpr" identifier -> field_identifier)) ;) (expression_statement "local_78 = local_78 | uVar41;" (assignment_expression "local_78 = local_78 | uVar41" identifier = (binary_expression "local_78 | uVar41" identifier | identifier)) ;) (expression_statement "pIVar50->aiColumn[iVar43] = local_70;" (assignment_expression "pIVar50->aiColumn[iVar43] = local_70" (subscript_expression "pIVar50->aiColumn[iVar43]" (field_expression "pIVar50->aiColumn" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dequote = (Index *)0xa082b;" (assignment_expression "dequote = (Index *)0xa082b" identifier = (cast_expression "(Index *)0xa082b" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight);" (assignment_expression "pCVar24 = sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight)" identifier = (call_expression "sqlite3BinaryCompareCollSeq\n                                              (pParse_00,pEVar56->pLeft,pEVar56->pRight)" identifier (argument_list "(pParse_00,pEVar56->pLeft,pEVar56->pRight)" ( identifier , (field_expression "pEVar56->pLeft" identifier -> field_identifier) , (field_expression "pEVar56->pRight" identifier -> field_identifier) )))) ;) (expression_statement "pcVar46 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "pcVar46 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (if_statement "if (pCVar24 != (CollSeq *)0x0) {\n                            pcVar46 = pCVar24->zName;\n                          }" if (parenthesized_expression "(pCVar24 != (CollSeq *)0x0)" ( (binary_expression "pCVar24 != (CollSeq *)0x0" identifier != (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            pcVar46 = pCVar24->zName;\n                          }" { (expression_statement "pcVar46 = pCVar24->zName;" (assignment_expression "pcVar46 = pCVar24->zName" identifier = (field_expression "pCVar24->zName" identifier -> field_identifier)) ;) })) (expression_statement "iVar40 = iVar40 + 2;" (assignment_expression "iVar40 = iVar40 + 2" identifier = (binary_expression "iVar40 + 2" identifier + number_literal)) ;) (expression_statement "pWVar29 = pWVar29 + 1;" (assignment_expression "pWVar29 = pWVar29 + 1" identifier = (binary_expression "pWVar29 + 1" identifier + number_literal)) ;) (expression_statement "pIVar50->azColl[iVar43] = pcVar46;" (assignment_expression "pIVar50->azColl[iVar43] = pcVar46" (subscript_expression "pIVar50->azColl[iVar43]" (field_expression "pIVar50->azColl" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar43 = iVar43 + 1;" (assignment_expression "iVar43 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pWVar29 < pWVar32)" ( (binary_expression "pWVar29 < pWVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0858:\n                        iVar23 = iVar43 * 4;" statement_identifier : (expression_statement "iVar23 = iVar43 * 4;" (assignment_expression "iVar23 = iVar43 * 4" identifier = (binary_expression "iVar43 * 4" identifier * number_literal)) ;)) (expression_statement "uVar57 = (undefined1)iVar23;" (assignment_expression "uVar57 = (undefined1)iVar23" identifier = (cast_expression "(undefined1)iVar23" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar23 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar23 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar23 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar23 >> 8)" ( (binary_expression "(uint)iVar23 >> 8" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar23 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar23 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar23 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar23 >> 0x10)" ( (binary_expression "(uint)iVar23 >> 0x10" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pPVar22 = pParse_00;" (assignment_expression "pPVar22 = pParse_00" identifier = identifier) ;) }) (else_clause "else {\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }" else (compound_statement "{\n                        iVar40 = 0;\n                        pPVar22 = pParse_00;\n                      }" { (expression_statement "iVar40 = 0;" (assignment_expression "iVar40 = 0" identifier = number_literal) ;) (expression_statement "pPVar22 = pParse_00;" (assignment_expression "pPVar22 = pParse_00" identifier = identifier) ;) }))) (expression_statement "local_84 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "local_84 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (expression_statement "piVar49 = pIVar50->aiColumn;" (assignment_expression "piVar49 = pIVar50->aiColumn" identifier = (field_expression "pIVar50->aiColumn" identifier -> field_identifier)) ;) (if_statement "if (sVar6 < 1) {\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }\n                      else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }" if (parenthesized_expression "(sVar6 < 1)" ( (binary_expression "sVar6 < 1" identifier < number_literal) )) (compound_statement "{\n                        piVar45 = (i16 *)((int)piVar49 + iVar40);\n                      }" { (expression_statement "piVar45 = (i16 *)((int)piVar49 + iVar40);" (assignment_expression "piVar45 = (i16 *)((int)piVar49 + iVar40)" identifier = (cast_expression "(i16 *)((int)piVar49 + iVar40)" ( (type_descriptor "i16 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar49 + iVar40)" ( (binary_expression "(int)piVar49 + iVar40" (cast_expression "(int)piVar49" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) (else_clause "else {\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }" else (compound_statement "{\n                        uVar34 = 0;\n                        iVar40 = iVar43;\n                        do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);\n                      }" { (expression_statement "uVar34 = 0;" (assignment_expression "uVar34 = 0" identifier = number_literal) ;) (expression_statement "iVar40 = iVar43;" (assignment_expression "iVar40 = iVar43" identifier = identifier) ;) (do_statement "do {\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        } while (uVar27 != uVar34);" do (compound_statement "{\n                          iVar23 = iVar40 * 4;\n                          uVar57 = (undefined1)iVar23;\n                          uVar58 = (undefined1)((uint)iVar23 >> 8);\n                          uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                          piVar45 = piVar49 + iVar40;\n                          bVar14 = (byte)uVar34 & 0x1f;\n                          uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;\n                          if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }\n                          iVar43 = iVar40;\n                          if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }\n                          uVar34 = uVar34 + 1;\n                          iVar40 = iVar43;\n                        }" { (expression_statement "iVar23 = iVar40 * 4;" (assignment_expression "iVar23 = iVar40 * 4" identifier = (binary_expression "iVar40 * 4" identifier * number_literal)) ;) (expression_statement "uVar57 = (undefined1)iVar23;" (assignment_expression "uVar57 = (undefined1)iVar23" identifier = (cast_expression "(undefined1)iVar23" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar23 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar23 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar23 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar23 >> 8)" ( (binary_expression "(uint)iVar23 >> 8" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar23 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar23 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar23 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar23 >> 0x10)" ( (binary_expression "(uint)iVar23 >> 0x10" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar45 = piVar49 + iVar40;" (assignment_expression "piVar45 = piVar49 + iVar40" identifier = (binary_expression "piVar49 + iVar40" identifier + identifier)) ;) (expression_statement "bVar14 = (byte)uVar34 & 0x1f;" (assignment_expression "bVar14 = (byte)uVar34 & 0x1f" identifier = (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14;" (assignment_expression "uVar35 = uVar18 >> bVar14 | uVar16 << 0x20 - bVar14" identifier = (binary_expression "uVar18 >> bVar14 | uVar16 << 0x20 - bVar14" (binary_expression "uVar18 >> bVar14" identifier >> identifier) | (binary_expression "uVar16 << 0x20 - bVar14" identifier << (binary_expression "0x20 - bVar14" number_literal - identifier)))) ;) (if_statement "if ((uVar34 & 0x20) != 0) {\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }" if (parenthesized_expression "((uVar34 & 0x20) != 0)" ( (binary_expression "(uVar34 & 0x20) != 0" (parenthesized_expression "(uVar34 & 0x20)" ( (binary_expression "uVar34 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);\n                          }" { (expression_statement "uVar35 = uVar16 >> ((byte)uVar34 & 0x1f);" (assignment_expression "uVar35 = uVar16 >> ((byte)uVar34 & 0x1f)" identifier = (binary_expression "uVar16 >> ((byte)uVar34 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar34 & 0x1f)" ( (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "iVar43 = iVar40;" (assignment_expression "iVar43 = iVar40" identifier = identifier) ;) (if_statement "if ((uVar35 & 1) != 0) {\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }" if (parenthesized_expression "((uVar35 & 1) != 0)" ( (binary_expression "(uVar35 & 1) != 0" (parenthesized_expression "(uVar35 & 1)" ( (binary_expression "uVar35 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            *piVar45 = (i16)uVar34;\n                            iVar23 = iVar23 + 4;\n                            uVar57 = (undefined1)iVar23;\n                            uVar58 = (undefined1)((uint)iVar23 >> 8);\n                            uVar59 = (undefined2)((uint)iVar23 >> 0x10);\n                            pIVar50->azColl[iVar40] = local_84;\n                            piVar49 = pIVar50->aiColumn;\n                            iVar43 = iVar40 + 1;\n                            piVar45 = piVar49 + iVar40 + 1;\n                          }" { (expression_statement "*piVar45 = (i16)uVar34;" (assignment_expression "*piVar45 = (i16)uVar34" (pointer_expression "*piVar45" * identifier) = (cast_expression "(i16)uVar34" ( (type_descriptor "i16" type_identifier) ) identifier)) ;) (expression_statement "iVar23 = iVar23 + 4;" (assignment_expression "iVar23 = iVar23 + 4" identifier = (binary_expression "iVar23 + 4" identifier + number_literal)) ;) (expression_statement "uVar57 = (undefined1)iVar23;" (assignment_expression "uVar57 = (undefined1)iVar23" identifier = (cast_expression "(undefined1)iVar23" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar23 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar23 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar23 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar23 >> 8)" ( (binary_expression "(uint)iVar23 >> 8" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar23 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar23 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar23 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar23 >> 0x10)" ( (binary_expression "(uint)iVar23 >> 0x10" (cast_expression "(uint)iVar23" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pIVar50->azColl[iVar40] = local_84;" (assignment_expression "pIVar50->azColl[iVar40] = local_84" (subscript_expression "pIVar50->azColl[iVar40]" (field_expression "pIVar50->azColl" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "piVar49 = pIVar50->aiColumn;" (assignment_expression "piVar49 = pIVar50->aiColumn" identifier = (field_expression "pIVar50->aiColumn" identifier -> field_identifier)) ;) (expression_statement "iVar43 = iVar40 + 1;" (assignment_expression "iVar43 = iVar40 + 1" identifier = (binary_expression "iVar40 + 1" identifier + number_literal)) ;) (expression_statement "piVar45 = piVar49 + iVar40 + 1;" (assignment_expression "piVar45 = piVar49 + iVar40 + 1" identifier = (binary_expression "piVar49 + iVar40 + 1" (binary_expression "piVar49 + iVar40" identifier + identifier) + number_literal)) ;) })) (expression_statement "uVar34 = uVar34 + 1;" (assignment_expression "uVar34 = uVar34 + 1" identifier = (binary_expression "uVar34 + 1" identifier + number_literal)) ;) (expression_statement "iVar40 = iVar43;" (assignment_expression "iVar40 = iVar43" identifier = identifier) ;) }) while (parenthesized_expression "(uVar27 != uVar34)" ( (binary_expression "uVar27 != uVar34" identifier != identifier) )) ;) }))) (if_statement "if ((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         ) {\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }" if (parenthesized_expression "((*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)\n                         )" ( (binary_expression "(*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)" (parenthesized_expression "(*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0)" ( (binary_expression "*(int *)((int)&pSrc->a[bVar42].colUsed + 4) < 0" (pointer_expression "*(int *)((int)&pSrc->a[bVar42].colUsed + 4)" * (cast_expression "(int *)((int)&pSrc->a[bVar42].colUsed + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSrc->a[bVar42].colUsed + 4)" ( (binary_expression "(int)&pSrc->a[bVar42].colUsed + 4" (cast_expression "(int)&pSrc->a[bVar42].colUsed" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSrc->a[bVar42].colUsed" & (field_expression "pSrc->a[bVar42].colUsed" (subscript_expression "pSrc->a[bVar42]" (field_expression "pSrc->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) + number_literal) )))) < number_literal) )) && (parenthesized_expression "(0x3f < pTVar8->nCol)" ( (binary_expression "0x3f < pTVar8->nCol" number_literal < (field_expression "pTVar8->nCol" identifier -> field_identifier)) ))) )) (compound_statement "{\n                        iVar40 = 0x3f;\n                        while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }\n                        iVar40 = iVar43 * 4;\n                        uVar57 = (undefined1)iVar40;\n                        uVar58 = (undefined1)((uint)iVar40 >> 8);\n                        uVar59 = (undefined2)((uint)iVar40 >> 0x10);\n                        piVar45 = pIVar50->aiColumn + iVar43;\n                      }" { (expression_statement "iVar40 = 0x3f;" (assignment_expression "iVar40 = 0x3f" identifier = number_literal) ;) (while_statement "while( true ) {\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          piVar49[iVar43] = (i16)iVar40;\n                          iVar40 = iVar40 + 1;\n                          pIVar50->azColl[iVar43] = local_84;\n                          iVar43 = iVar43 + 1;\n                          if (pTVar8->nCol <= iVar40) break;\n                          piVar49 = pIVar50->aiColumn;\n                        }" { (expression_statement "piVar49[iVar43] = (i16)iVar40;" (assignment_expression "piVar49[iVar43] = (i16)iVar40" (subscript_expression "piVar49[iVar43]" identifier [ identifier ]) = (cast_expression "(i16)iVar40" ( (type_descriptor "i16" type_identifier) ) identifier)) ;) (expression_statement "iVar40 = iVar40 + 1;" (assignment_expression "iVar40 = iVar40 + 1" identifier = (binary_expression "iVar40 + 1" identifier + number_literal)) ;) (expression_statement "pIVar50->azColl[iVar43] = local_84;" (assignment_expression "pIVar50->azColl[iVar43] = local_84" (subscript_expression "pIVar50->azColl[iVar43]" (field_expression "pIVar50->azColl" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "iVar43 = iVar43 + 1;" (assignment_expression "iVar43 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (if_statement "if (pTVar8->nCol <= iVar40) break;" if (parenthesized_expression "(pTVar8->nCol <= iVar40)" ( (binary_expression "pTVar8->nCol <= iVar40" (field_expression "pTVar8->nCol" identifier -> field_identifier) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "piVar49 = pIVar50->aiColumn;" (assignment_expression "piVar49 = pIVar50->aiColumn" identifier = (field_expression "pIVar50->aiColumn" identifier -> field_identifier)) ;) })) (expression_statement "iVar40 = iVar43 * 4;" (assignment_expression "iVar40 = iVar43 * 4" identifier = (binary_expression "iVar43 * 4" identifier * number_literal)) ;) (expression_statement "uVar57 = (undefined1)iVar40;" (assignment_expression "uVar57 = (undefined1)iVar40" identifier = (cast_expression "(undefined1)iVar40" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar40 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar40 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar40 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar40 >> 8)" ( (binary_expression "(uint)iVar40 >> 8" (cast_expression "(uint)iVar40" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)((uint)iVar40 >> 0x10);" (assignment_expression "uVar59 = (undefined2)((uint)iVar40 >> 0x10)" identifier = (call_expression "(undefined2)((uint)iVar40 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)iVar40 >> 0x10)" ( (binary_expression "(uint)iVar40 >> 0x10" (cast_expression "(uint)iVar40" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar45 = pIVar50->aiColumn + iVar43;" (assignment_expression "piVar45 = pIVar50->aiColumn + iVar43" identifier = (binary_expression "pIVar50->aiColumn + iVar43" (field_expression "pIVar50->aiColumn" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "*piVar45 = -1;" (assignment_expression "*piVar45 = -1" (pointer_expression "*piVar45" * identifier) = number_literal) ;) (expression_statement "*(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84;" (assignment_expression "*(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))) =\n                           local_84" (pointer_expression "*(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57)))" * (cast_expression "(char **)((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57)))" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57)))" ( (binary_expression "(int)pIVar50->azColl + CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" (cast_expression "(int)pIVar50->azColl" ( (type_descriptor "int" primitive_type) ) (field_expression "pIVar50->azColl" identifier -> field_identifier)) + (call_expression "CONCAT22(uVar59,CONCAT11(uVar58,uVar57))" identifier (argument_list "(uVar59,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) )))) = identifier) ;) (expression_statement "p1 = (Vdbe *)pPVar22->nTab;" (assignment_expression "p1 = (Vdbe *)pPVar22->nTab" identifier = (cast_expression "(Vdbe *)pPVar22->nTab" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pPVar22->nTab" identifier -> field_identifier))) ;) (expression_statement "pPVar22->nTab = (int)((int)&p1->db + 1);" (assignment_expression "pPVar22->nTab = (int)((int)&p1->db + 1)" (field_expression "pPVar22->nTab" identifier -> field_identifier) = (cast_expression "(int)((int)&p1->db + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&p1->db + 1)" ( (binary_expression "(int)&p1->db + 1" (cast_expression "(int)&p1->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p1->db" & (field_expression "p1->db" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "local_b8->pNext = p1;" (assignment_expression "local_b8->pNext = p1" (field_expression "local_b8->pNext" identifier -> field_identifier) = identifier) ;) (expression_statement "pParse_00 = pPVar22;" (assignment_expression "pParse_00 = pPVar22" identifier = identifier) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0);" (call_expression "sqlite3VdbeAddOp3(p_00,0x70,(int)p1,local_c0 + 1,0)" identifier (argument_list "(p_00,0x70,(int)p1,local_c0 + 1,0)" ( identifier , number_literal , (cast_expression "(int)p1" ( (type_descriptor "int" primitive_type) ) identifier) , (binary_expression "local_c0 + 1" identifier + number_literal) , number_literal ))) ;) (expression_statement "sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50);" (call_expression "sqlite3VdbeSetP4KeyInfo(pPVar22,pIVar50)" identifier (argument_list "(pPVar22,pIVar50)" ( identifier , identifier ))) ;) (expression_statement "bVar42 = (byte)local_b8->pc;" (assignment_expression "bVar42 = (byte)local_b8->pc" identifier = (cast_expression "(byte)local_b8->pc" ( (type_descriptor "byte" type_identifier) ) (field_expression "local_b8->pc" identifier -> field_identifier))) ;) (expression_statement "pSVar51 = ((local_d0->sWC).pWInfo)->pTabList;" (assignment_expression "pSVar51 = ((local_d0->sWC).pWInfo)->pTabList" identifier = (field_expression "((local_d0->sWC).pWInfo)->pTabList" (parenthesized_expression "((local_d0->sWC).pWInfo)" ( (field_expression "(local_d0->sWC).pWInfo" (parenthesized_expression "(local_d0->sWC)" ( (field_expression "local_d0->sWC" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (if_statement "if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }\n                      else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }" if (parenthesized_expression "((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0)" ( (binary_expression "(pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0" (parenthesized_expression "(pSVar51->a[bVar42].fg.field_0x1 & 0x10)" ( (binary_expression "pSVar51->a[bVar42].fg.field_0x1 & 0x10" (field_expression "pSVar51->a[bVar42].fg.field_0x1" (field_expression "pSVar51->a[bVar42].fg" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);\n                        local_b4 = (Parse *)0x0;\n                      }" { (expression_statement "iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0);" (assignment_expression "iVar40 = sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0x24,(int)local_b8->pPrev,0,0)" identifier (argument_list "(p_00,0x24,(int)local_b8->pPrev,0,0)" ( identifier , number_literal , (cast_expression "(int)local_b8->pPrev" ( (type_descriptor "int" primitive_type) ) (field_expression "local_b8->pPrev" identifier -> field_identifier)) , number_literal , number_literal )))) ;) (expression_statement "local_b4 = (Parse *)0x0;" (assignment_expression "local_b4 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }" else (compound_statement "{\n                        iVar40 = pSVar51->a[bVar42].regReturn;\n                        local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);\n                        sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);\n                        iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);\n                      }" { (expression_statement "iVar40 = pSVar51->a[bVar42].regReturn;" (assignment_expression "iVar40 = pSVar51->a[bVar42].regReturn" identifier = (field_expression "pSVar51->a[bVar42].regReturn" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0);" (assignment_expression "local_b4 = (Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0)" identifier = (cast_expression "(Parse *)sqlite3VdbeAddOp3(p_00,0x46,0,0,0)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3VdbeAddOp3(p_00,0x46,0,0,0)" identifier (argument_list "(p_00,0x46,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal ))))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub);" (call_expression "sqlite3VdbeAddOp3(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub)" identifier (argument_list "(p_00,0xd,iVar40,0,pSVar51->a[bVar42].addrFillSub)" ( identifier , number_literal , identifier , number_literal , (field_expression "pSVar51->a[bVar42].addrFillSub" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier) ))) ;) (expression_statement "iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0);" (assignment_expression "iVar40 = sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0)" identifier = (call_expression "sqlite3VdbeAddOp3(p_00,0xe,iVar40,0,0)" identifier (argument_list "(p_00,0xe,iVar40,0,0)" ( identifier , number_literal , identifier , number_literal , number_literal )))) ;) }))) (expression_statement "iVar23 = 0;" (assignment_expression "iVar23 = 0" identifier = number_literal) ;) (if_statement "if (local_74 != (Expr *)0x0) {\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }" if (parenthesized_expression "(local_74 != (Expr *)0x0)" ( (binary_expression "local_74 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        iVar23 = pParse_00->nLabel + -1;\n                        pParse_00->nLabel = iVar23;\n                        dequote = (Index *)0x10;\n                        sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);\n                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;\n                      }" { (expression_statement "iVar23 = pParse_00->nLabel + -1;" (assignment_expression "iVar23 = pParse_00->nLabel + -1" identifier = (binary_expression "pParse_00->nLabel + -1" (field_expression "pParse_00->nLabel" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse_00->nLabel = iVar23;" (assignment_expression "pParse_00->nLabel = iVar23" (field_expression "pParse_00->nLabel" identifier -> field_identifier) = identifier) ;) (expression_statement "dequote = (Index *)0x10;" (assignment_expression "dequote = (Index *)0x10" identifier = (cast_expression "(Index *)0x10" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10);" (call_expression "sqlite3ExprIfFalse(pParse_00,local_74,iVar23,0x10)" identifier (argument_list "(pParse_00,local_74,iVar23,0x10)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;" (assignment_expression "pWVar47->wsFlags = pWVar47->wsFlags | 0x20000" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) = (binary_expression "pWVar47->wsFlags | 0x20000" (field_expression "pWVar47->wsFlags" identifier -> field_identifier) | number_literal)) ;) })) (if_statement "if (pParse_00->nTempReg == '\0') {\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }\n                      else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }" if (parenthesized_expression "(pParse_00->nTempReg == '\0')" ( (binary_expression "pParse_00->nTempReg == '\0'" (field_expression "pParse_00->nTempReg" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar25 = pParse_00->nMem + 1;\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                        pParse_00->nMem = iVar25;\n                      }" { (expression_statement "iVar25 = pParse_00->nMem + 1;" (assignment_expression "iVar25 = pParse_00->nMem + 1" identifier = (binary_expression "pParse_00->nMem + 1" (field_expression "pParse_00->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "uVar57 = (undefined1)iVar25;" (assignment_expression "uVar57 = (undefined1)iVar25" identifier = (cast_expression "(undefined1)iVar25" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar25 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar25 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar25 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar25 >> 8)" ( (binary_expression "(uint)iVar25 >> 8" (cast_expression "(uint)iVar25" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "sVar60 = (short)((uint)iVar25 >> 0x10);" (assignment_expression "sVar60 = (short)((uint)iVar25 >> 0x10)" identifier = (cast_expression "(short)((uint)iVar25 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((uint)iVar25 >> 0x10)" ( (binary_expression "(uint)iVar25 >> 0x10" (cast_expression "(uint)iVar25" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pParse_00->nMem = iVar25;" (assignment_expression "pParse_00->nMem = iVar25" (field_expression "pParse_00->nMem" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }" else (compound_statement "{\n                        bVar14 = pParse_00->nTempReg - 1;\n                        pParse_00->nTempReg = bVar14;\n                        iVar25 = pParse_00->aTempReg[bVar14];\n                        uVar57 = (undefined1)iVar25;\n                        uVar58 = (undefined1)((uint)iVar25 >> 8);\n                        sVar60 = (short)((uint)iVar25 >> 0x10);\n                      }" { (expression_statement "bVar14 = pParse_00->nTempReg - 1;" (assignment_expression "bVar14 = pParse_00->nTempReg - 1" identifier = (binary_expression "pParse_00->nTempReg - 1" (field_expression "pParse_00->nTempReg" identifier -> field_identifier) - number_literal)) ;) (expression_statement "pParse_00->nTempReg = bVar14;" (assignment_expression "pParse_00->nTempReg = bVar14" (field_expression "pParse_00->nTempReg" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar25 = pParse_00->aTempReg[bVar14];" (assignment_expression "iVar25 = pParse_00->aTempReg[bVar14]" identifier = (subscript_expression "pParse_00->aTempReg[bVar14]" (field_expression "pParse_00->aTempReg" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "uVar57 = (undefined1)iVar25;" (assignment_expression "uVar57 = (undefined1)iVar25" identifier = (cast_expression "(undefined1)iVar25" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar58 = (undefined1)((uint)iVar25 >> 8);" (assignment_expression "uVar58 = (undefined1)((uint)iVar25 >> 8)" identifier = (call_expression "(undefined1)((uint)iVar25 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)iVar25 >> 8)" ( (binary_expression "(uint)iVar25 >> 8" (cast_expression "(uint)iVar25" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "sVar60 = (short)((uint)iVar25 >> 0x10);" (assignment_expression "sVar60 = (short)((uint)iVar25 >> 0x10)" identifier = (cast_expression "(short)((uint)iVar25 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "((uint)iVar25 >> 0x10)" ( (binary_expression "(uint)iVar25 >> 0x10" (cast_expression "(uint)iVar25" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) }))) (expression_statement "iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0);" (assignment_expression "iVar25 = sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0)" identifier = (call_expression "sqlite3GenerateIndexKey\n                                         (pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0)" identifier (argument_list "(pParse_00,pIVar50,(int)local_b8->pPrev,\n                                          CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0,(int *)0x0,\n                                          (Index *)0x0,0)" ( identifier , identifier , (cast_expression "(int)local_b8->pPrev" ( (type_descriptor "int" primitive_type) ) (field_expression "local_b8->pPrev" identifier -> field_identifier)) , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) , number_literal , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal )))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0);" (call_expression "sqlite3VdbeAddOp3(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0)" identifier (argument_list "(p_00,0x84,(int)local_b8->pNext,\n                                        CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),0)" ( identifier , number_literal , (cast_expression "(int)local_b8->pNext" ( (type_descriptor "int" primitive_type) ) (field_expression "local_b8->pNext" identifier -> field_identifier)) , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) , number_literal ))) ;) (if_statement "if (0 < p_00->nOp) {\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }" if (parenthesized_expression "(0 < p_00->nOp)" ( (binary_expression "0 < p_00->nOp" number_literal < (field_expression "p_00->nOp" identifier -> field_identifier)) )) (compound_statement "{\n                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;\n                      }" { (expression_statement "p_00->aOp[p_00->nOp + -1].p5 = 0x10;" (assignment_expression "p_00->aOp[p_00->nOp + -1].p5 = 0x10" (field_expression "p_00->aOp[p_00->nOp + -1].p5" (subscript_expression "p_00->aOp[p_00->nOp + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) ]) . field_identifier) = number_literal) ;) })) (if_statement "if (local_74 != (Expr *)0x0) {\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }" if (parenthesized_expression "(local_74 != (Expr *)0x0)" ( (binary_expression "local_74 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        dequote = (Index *)0xa0a80;\n                        sqlite3VdbeResolveLabel(p_00,iVar23);\n                      }" { (expression_statement "dequote = (Index *)0xa0a80;" (assignment_expression "dequote = (Index *)0xa0a80" identifier = (cast_expression "(Index *)0xa0a80" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3VdbeResolveLabel(p_00,iVar23);" (call_expression "sqlite3VdbeResolveLabel(p_00,iVar23)" identifier (argument_list "(p_00,iVar23)" ( identifier , identifier ))) ;) })) (if_statement "if ((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0) {\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }" if (parenthesized_expression "((pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0)" ( (binary_expression "(pSVar51->a[bVar42].fg.field_0x1 & 0x10) == 0" (parenthesized_expression "(pSVar51->a[bVar42].fg.field_0x1 & 0x10)" ( (binary_expression "pSVar51->a[bVar42].fg.field_0x1 & 0x10" (field_expression "pSVar51->a[bVar42].fg.field_0x1" (field_expression "pSVar51->a[bVar42].fg" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                        sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);\n                      }" { (expression_statement "sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0);" (call_expression "sqlite3VdbeAddOp3(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0)" identifier (argument_list "(p_00,5,(int)local_b8->pPrev,iVar40 + 1,0)" ( identifier , number_literal , (cast_expression "(int)local_b8->pPrev" ( (type_descriptor "int" primitive_type) ) (field_expression "local_b8->pPrev" identifier -> field_identifier)) , (binary_expression "iVar40 + 1" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }" else (compound_statement "{\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }\n                        pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);\n                        if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }\n                        pOVar26->p2 = iVar25 + iVar43;\n                        translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);\n                        sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);\n                        puVar36 = &pSVar51->a[bVar42].fg.field_0x1;\n                        *puVar36 = *puVar36 & 0xef;\n                      }" { (if_statement "if ((int)local_b4 < 0) {\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }" if (parenthesized_expression "((int)local_b4 < 0)" ( (binary_expression "(int)local_b4 < 0" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          local_b4 = (Parse *)(p_00->nOp + -1);\n                        }" { (expression_statement "local_b4 = (Parse *)(p_00->nOp + -1);" (assignment_expression "local_b4 = (Parse *)(p_00->nOp + -1)" identifier = (cast_expression "(Parse *)(p_00->nOp + -1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_00->nOp + -1)" ( (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal) )))) ;) })) (expression_statement "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);" (assignment_expression "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI)" identifier = (cast_expression "(Op *)(&UNK_000ac9e5 + unaff_EDI)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000ac9e5 + unaff_EDI)" ( (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier) )))) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          pOVar26 = p_00->aOp + (int)local_b4;\n                        }" { (expression_statement "pOVar26 = p_00->aOp + (int)local_b4;" (assignment_expression "pOVar26 = p_00->aOp + (int)local_b4" identifier = (binary_expression "p_00->aOp + (int)local_b4" (field_expression "p_00->aOp" identifier -> field_identifier) + (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pOVar26->p2 = iVar25 + iVar43;" (assignment_expression "pOVar26->p2 = iVar25 + iVar43" (field_expression "pOVar26->p2" identifier -> field_identifier) = (binary_expression "iVar25 + iVar43" identifier + identifier)) ;) (expression_statement "translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28);" (call_expression "translateColumnToCopy\n                                  ((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28)" identifier (argument_list "((Parse *)local_b8->pPrev,pSVar51->a[bVar42].regResult,1,\n                                   (int)dequote,CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                   in_stack_ffffff28)" ( (cast_expression "(Parse *)local_b8->pPrev" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_b8->pPrev" identifier -> field_identifier)) , (field_expression "pSVar51->a[bVar42].regResult" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier) , number_literal , (cast_expression "(int)dequote" ( (type_descriptor "int" primitive_type) ) identifier) , (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) ))) , identifier ))) ;) (expression_statement "sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0);" (call_expression "sqlite3VdbeAddOp3(p_00,0xb,0,iVar40,0)" identifier (argument_list "(p_00,0xb,0,iVar40,0)" ( identifier , number_literal , number_literal , identifier , number_literal ))) ;) (expression_statement "puVar36 = &pSVar51->a[bVar42].fg.field_0x1;" (assignment_expression "puVar36 = &pSVar51->a[bVar42].fg.field_0x1" identifier = (pointer_expression "&pSVar51->a[bVar42].fg.field_0x1" & (field_expression "pSVar51->a[bVar42].fg.field_0x1" (field_expression "pSVar51->a[bVar42].fg" (subscript_expression "pSVar51->a[bVar42]" (field_expression "pSVar51->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar36 = *puVar36 & 0xef;" (assignment_expression "*puVar36 = *puVar36 & 0xef" (pointer_expression "*puVar36" * identifier) = (binary_expression "*puVar36 & 0xef" (pointer_expression "*puVar36" * identifier) & number_literal)) ;) }))) (expression_statement "iVar43 = p_00->nOp;" (assignment_expression "iVar43 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) (if_statement "if (0 < iVar43) {\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }" if (parenthesized_expression "(0 < iVar43)" ( (binary_expression "0 < iVar43" number_literal < identifier) )) (compound_statement "{\n                        p_00->aOp[iVar43 + -1].p5 = 3;\n                        iVar43 = p_00->nOp;\n                      }" { (expression_statement "p_00->aOp[iVar43 + -1].p5 = 3;" (assignment_expression "p_00->aOp[iVar43 + -1].p5 = 3" (field_expression "p_00->aOp[iVar43 + -1].p5" (subscript_expression "p_00->aOp[iVar43 + -1]" (field_expression "p_00->aOp" identifier -> field_identifier) [ (binary_expression "iVar43 + -1" identifier + number_literal) ]) . field_identifier) = number_literal) ;) (expression_statement "iVar43 = p_00->nOp;" (assignment_expression "iVar43 = p_00->nOp" identifier = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) })) (if_statement "if (iVar40 < 0) {\n                        iVar40 = iVar43 + -1;\n                      }" if (parenthesized_expression "(iVar40 < 0)" ( (binary_expression "iVar40 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar40 = iVar43 + -1;\n                      }" { (expression_statement "iVar40 = iVar43 + -1;" (assignment_expression "iVar40 = iVar43 + -1" identifier = (binary_expression "iVar43 + -1" identifier + number_literal)) ;) })) (expression_statement "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);" (assignment_expression "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI)" identifier = (cast_expression "(Op *)(&UNK_000ac9e5 + unaff_EDI)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000ac9e5 + unaff_EDI)" ( (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier) )))) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar40;\n                      }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pOVar26 = p_00->aOp + iVar40;\n                      }" { (expression_statement "pOVar26 = p_00->aOp + iVar40;" (assignment_expression "pOVar26 = p_00->aOp + iVar40" identifier = (binary_expression "p_00->aOp + iVar40" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar26->p2 = iVar43;" (assignment_expression "pOVar26->p2 = iVar43" (field_expression "pOVar26->p2" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57));" (assignment_expression "iVar43 = CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier = (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) ;) (if_statement "if (iVar43 != 0) {\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }" if (parenthesized_expression "(iVar43 != 0)" ( (binary_expression "iVar43 != 0" identifier != number_literal) )) (compound_statement "{\n                        sqlite3ReleaseTempReg(pParse_00,iVar43);\n                      }" { (expression_statement "sqlite3ReleaseTempReg(pParse_00,iVar43);" (call_expression "sqlite3ReleaseTempReg(pParse_00,iVar43)" identifier (argument_list "(pParse_00,iVar43)" ( identifier , identifier ))) ;) })) (expression_statement "iVar43 = p_00->nOp + -1;" (assignment_expression "iVar43 = p_00->nOp + -1" identifier = (binary_expression "p_00->nOp + -1" (field_expression "p_00->nOp" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (-1 < iVar17) {\n                        iVar43 = iVar17;\n                      }" if (parenthesized_expression "(-1 < iVar17)" ( (binary_expression "-1 < iVar17" number_literal < identifier) )) (compound_statement "{\n                        iVar43 = iVar17;\n                      }" { (expression_statement "iVar43 = iVar17;" (assignment_expression "iVar43 = iVar17" identifier = identifier) ;) })) (expression_statement "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI);" (assignment_expression "pOVar26 = (Op *)(&UNK_000ac9e5 + unaff_EDI)" identifier = (cast_expression "(Op *)(&UNK_000ac9e5 + unaff_EDI)" ( (type_descriptor "Op *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_000ac9e5 + unaff_EDI)" ( (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier) )))) ;) (if_statement "if (p_00->db->mallocFailed == '\0') {\n                        pOVar26 = p_00->aOp + iVar43;\n                      }" if (parenthesized_expression "(p_00->db->mallocFailed == '\0')" ( (binary_expression "p_00->db->mallocFailed == '\0'" (field_expression "p_00->db->mallocFailed" (field_expression "p_00->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pOVar26 = p_00->aOp + iVar43;\n                      }" { (expression_statement "pOVar26 = p_00->aOp + iVar43;" (assignment_expression "pOVar26 = p_00->aOp + iVar43" identifier = (binary_expression "p_00->aOp + iVar43" (field_expression "p_00->aOp" identifier -> field_identifier) + identifier)) ;) })) (expression_statement "pOVar26->p2 = p_00->nOp;" (assignment_expression "pOVar26->p2 = p_00->nOp" (field_expression "pOVar26->p2" identifier -> field_identifier) = (field_expression "p_00->nOp" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_000a0ba5:\n                    if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }" statement_identifier : (if_statement "if (local_74 != (Expr *)0x0) {\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }" if (parenthesized_expression "(local_74 != (Expr *)0x0)" ( (binary_expression "local_74 != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      sqlite3ExprDeleteNN(pParse_00->db,local_74);\n                    }" { (expression_statement "sqlite3ExprDeleteNN(pParse_00->db,local_74);" (call_expression "sqlite3ExprDeleteNN(pParse_00->db,local_74)" identifier (argument_list "(pParse_00->db,local_74)" ( (field_expression "pParse_00->db" identifier -> field_identifier) , identifier ))) ;) }))) (if_statement "if (db->mallocFailed != '\0') goto LAB_000a0bd0;" if (parenthesized_expression "(db->mallocFailed != '\0')" ( (binary_expression "db->mallocFailed != '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;)) })) (expression_statement "pPVar22 = pParse_00->pToplevel;" (assignment_expression "pPVar22 = pParse_00->pToplevel" identifier = (field_expression "pParse_00->pToplevel" identifier -> field_identifier)) ;) (if_statement "if (pParse_00->pToplevel == (Parse *)0x0) {\n                    pPVar22 = pParse_00;\n                  }" if (parenthesized_expression "(pParse_00->pToplevel == (Parse *)0x0)" ( (binary_expression "pParse_00->pToplevel == (Parse *)0x0" (field_expression "pParse_00->pToplevel" identifier -> field_identifier) == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    pPVar22 = pParse_00;\n                  }" { (expression_statement "pPVar22 = pParse_00;" (assignment_expression "pPVar22 = pParse_00" identifier = identifier) ;) })) (if_statement "if (pPVar22->explain == '\x02') {\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }" if (parenthesized_expression "(pPVar22->explain == '\x02')" ( (binary_expression "pPVar22->explain == '\x02'" (field_expression "pPVar22->explain" identifier -> field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);\n                  }" { (expression_statement "sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00);" (call_expression "sqlite3WhereExplainOneScan(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00)" identifier (argument_list "(pParse_00,pSrc,(WhereLevel *)local_b8,wctrlFlags_00)" ( identifier , identifier , (cast_expression "(WhereLevel *)local_b8" ( (type_descriptor "WhereLevel *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) })) (expression_statement "local_b8->cacheCtr = p->nOp;" (assignment_expression "local_b8->cacheCtr = p->nOp" (field_expression "local_b8->cacheCtr" identifier -> field_identifier) = (field_expression "p->nOp" identifier -> field_identifier)) ;) (expression_statement "pPVar22 = (Parse *)((int)&local_88->db + 1);" (assignment_expression "pPVar22 = (Parse *)((int)&local_88->db + 1)" identifier = (cast_expression "(Parse *)((int)&local_88->db + 1)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_88->db + 1)" ( (binary_expression "(int)&local_88->db + 1" (cast_expression "(int)&local_88->db" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_88->db" & (field_expression "local_88->db" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28));" (assignment_expression "BVar54 = sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28))" identifier = (call_expression "sqlite3WhereCodeOneLoopStart\n                                     (local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28))" identifier (argument_list "(local_88,local_b8,(WhereInfo *)local_cc,(int)local_cc._4_4_,\n                                      (WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57)),\n                                      CONCAT44(pParse_00,in_stack_ffffff28))" ( identifier , identifier , (cast_expression "(WhereInfo *)local_cc" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int)local_cc._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "local_cc._4_4_" identifier . field_identifier)) , (cast_expression "(WhereLevel *)CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" ( (type_descriptor "WhereLevel *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT22(sVar60,CONCAT11(uVar58,uVar57))" identifier (argument_list "(sVar60,CONCAT11(uVar58,uVar57))" ( identifier , (call_expression "CONCAT11(uVar58,uVar57)" identifier (argument_list "(uVar58,uVar57)" ( identifier , identifier ))) )))) , (call_expression "CONCAT44(pParse_00,in_stack_ffffff28)" identifier (argument_list "(pParse_00,in_stack_ffffff28)" ( identifier , identifier ))) )))) ;) (expression_statement "local_d0->iContinue = local_b8->nMem;" (assignment_expression "local_d0->iContinue = local_b8->nMem" (field_expression "local_d0->iContinue" identifier -> field_identifier) = (field_expression "local_b8->nMem" identifier -> field_identifier)) ;) (expression_statement "dequote = local_cc._4_4_;" (assignment_expression "dequote = local_cc._4_4_" identifier = (field_expression "local_cc._4_4_" identifier . field_identifier)) ;) (expression_statement "local_cc = BVar54;" (assignment_expression "local_cc = BVar54" identifier = identifier) ;) (expression_statement "local_b8 = (Vdbe *)&local_b8->nStmtDefCons;" (assignment_expression "local_b8 = (Vdbe *)&local_b8->nStmtDefCons" identifier = (cast_expression "(Vdbe *)&local_b8->nStmtDefCons" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_b8->nStmtDefCons" & (field_expression "local_b8->nStmtDefCons" identifier -> field_identifier)))) ;) (expression_statement "local_88 = pPVar22;" (assignment_expression "local_88 = pPVar22" identifier = identifier) ;) }) while (parenthesized_expression "(local_a0 != pPVar22)" ( (binary_expression "local_a0 != pPVar22" identifier != identifier) )) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) })))) })) }) (else_clause "else {\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }" else (compound_statement "{\nLAB_000a0070:\n          pWVar47 = sWLB.pNew;\n          pWVar13 = sWLB.pWInfo;\n          pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;\n          pSVar48 = pSVar51->a;\n          db_00 = (sWLB.pWInfo)->pParse->db;\n          (sWLB.pNew)->wsFlags = 0;\n          sWLB.iPlanLimit = 20000;\n          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;\n          (sWLB.pNew)->nLTerm = 0;\n          (sWLB.pNew)->nLSlot = 3;\n          if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }\n          whereLoopClear(db_00,pWVar47);\n          dequote = (Index *)0xa01fb;\n          wherePathSolver(local_d0,0);\n          if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }\n        }" { (labeled_statement "LAB_000a0070:\n          pWVar47 = sWLB.pNew;" statement_identifier : (expression_statement "pWVar47 = sWLB.pNew;" (assignment_expression "pWVar47 = sWLB.pNew" identifier = (field_expression "sWLB.pNew" identifier . field_identifier)) ;)) (expression_statement "pWVar13 = sWLB.pWInfo;" (assignment_expression "pWVar13 = sWLB.pWInfo" identifier = (field_expression "sWLB.pWInfo" identifier . field_identifier)) ;) (expression_statement "pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel;" (assignment_expression "pSVar3 = pSVar51->a + (sWLB.pWInfo)->nLevel" identifier = (binary_expression "pSVar51->a + (sWLB.pWInfo)->nLevel" (field_expression "pSVar51->a" identifier -> field_identifier) + (field_expression "(sWLB.pWInfo)->nLevel" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier))) ;) (expression_statement "pSVar48 = pSVar51->a;" (assignment_expression "pSVar48 = pSVar51->a" identifier = (field_expression "pSVar51->a" identifier -> field_identifier)) ;) (expression_statement "db_00 = (sWLB.pWInfo)->pParse->db;" (assignment_expression "db_00 = (sWLB.pWInfo)->pParse->db" identifier = (field_expression "(sWLB.pWInfo)->pParse->db" (field_expression "(sWLB.pWInfo)->pParse" (parenthesized_expression "(sWLB.pWInfo)" ( (field_expression "sWLB.pWInfo" identifier . field_identifier) )) -> field_identifier) -> field_identifier)) ;) (expression_statement "(sWLB.pNew)->wsFlags = 0;" (assignment_expression "(sWLB.pNew)->wsFlags = 0" (field_expression "(sWLB.pNew)->wsFlags" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "sWLB.iPlanLimit = 20000;" (assignment_expression "sWLB.iPlanLimit = 20000" (field_expression "sWLB.iPlanLimit" identifier . field_identifier) = number_literal) ;) (expression_statement "(sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;" (assignment_expression "(sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace" (field_expression "(sWLB.pNew)->aLTerm" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = (field_expression "(sWLB.pNew)->aLTermSpace" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "(sWLB.pNew)->nLTerm = 0;" (assignment_expression "(sWLB.pNew)->nLTerm = 0" (field_expression "(sWLB.pNew)->nLTerm" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (expression_statement "(sWLB.pNew)->nLSlot = 3;" (assignment_expression "(sWLB.pNew)->nLSlot = 3" (field_expression "(sWLB.pNew)->nLSlot" (parenthesized_expression "(sWLB.pNew)" ( (field_expression "sWLB.pNew" identifier . field_identifier) )) -> field_identifier) = number_literal) ;) (if_statement "if (pSVar48 < pSVar3) {\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }" if (parenthesized_expression "(pSVar48 < pSVar3)" ( (binary_expression "pSVar48 < pSVar3" identifier < identifier) )) (compound_statement "{\n            uVar12 = '\0';\n            do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);\n          }" { (expression_statement "uVar12 = '\0';" (assignment_expression "uVar12 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (do_statement "do {\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            } while (pSVar48 < pSVar3);" do (compound_statement "{\n              pWVar47->iTab = uVar12;\n              uVar16 = (pWVar13->sMaskSet).n;\n              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;\n              if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }\nLAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;\n              *(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;\n              uVar5 = (pSVar48->fg).jointype;\n              if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }\n              if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }\n              uVar12 = uVar12 + '\x01';\n              pSVar48 = pSVar48 + 1;\n              uVar33 = uVar5;\n            }" { (expression_statement "pWVar47->iTab = uVar12;" (assignment_expression "pWVar47->iTab = uVar12" (field_expression "pWVar47->iTab" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar16 = (pWVar13->sMaskSet).n;" (assignment_expression "uVar16 = (pWVar13->sMaskSet).n" identifier = (field_expression "(pWVar13->sMaskSet).n" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;" (assignment_expression "sWLB.iPlanLimit = sWLB.iPlanLimit + 1000" (field_expression "sWLB.iPlanLimit" identifier . field_identifier) = (binary_expression "sWLB.iPlanLimit + 1000" (field_expression "sWLB.iPlanLimit" identifier . field_identifier) + number_literal)) ;) (if_statement "if ((int)uVar16 < 1) {\n                uVar16 = 0;\n                uVar18 = 0;\n              }\n              else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                uVar16 = 0;\n                uVar18 = 0;\n              }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }" else (if_statement "if (pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]) {\n                uVar16 = 1;\n                uVar18 = 0;\n              }\n              else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }" if (parenthesized_expression "(pSVar48->iCursor == (pWVar13->sMaskSet).ix[0])" ( (binary_expression "pSVar48->iCursor == (pWVar13->sMaskSet).ix[0]" (field_expression "pSVar48->iCursor" identifier -> field_identifier) == (subscript_expression "(pWVar13->sMaskSet).ix[0]" (field_expression "(pWVar13->sMaskSet).ix" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (compound_statement "{\n                uVar16 = 1;\n                uVar18 = 0;\n              }" { (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }" else (compound_statement "{\n                uVar18 = 0;\n                do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);\n                bVar42 = (byte)uVar34 & 0x1f;\n                uVar27 = 1 << ((byte)uVar34 & 0x1f);\n                uVar16 = uVar27;\n                uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;\n                if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }\n              }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                } while (pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]);" do (compound_statement "{\n                  uVar34 = uVar18 + 1;\n                  if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar17 = uVar18 + 1;\n                  uVar18 = uVar34;\n                }" { (expression_statement "uVar34 = uVar18 + 1;" (assignment_expression "uVar34 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (if_statement "if (uVar34 == uVar16) {\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }" if (parenthesized_expression "(uVar34 == uVar16)" ( (binary_expression "uVar34 == uVar16" identifier == identifier) )) (compound_statement "{\n                    uVar16 = 0;\n                    uVar18 = 0;\n                    goto LAB_000a014b;\n                  }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a014b;" goto statement_identifier ;) })) (expression_statement "iVar17 = uVar18 + 1;" (assignment_expression "iVar17 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar34;" (assignment_expression "uVar18 = uVar34" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17])" ( (binary_expression "pSVar48->iCursor != (pWVar13->sMaskSet).ix[iVar17]" (field_expression "pSVar48->iCursor" identifier -> field_identifier) != (subscript_expression "(pWVar13->sMaskSet).ix[iVar17]" (field_expression "(pWVar13->sMaskSet).ix" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ identifier ])) )) ;) (expression_statement "bVar42 = (byte)uVar34 & 0x1f;" (assignment_expression "bVar42 = (byte)uVar34 & 0x1f" identifier = (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar27 = 1 << ((byte)uVar34 & 0x1f);" (assignment_expression "uVar27 = 1 << ((byte)uVar34 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar34 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar34 & 0x1f)" ( (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar16 = uVar27;" (assignment_expression "uVar16 = uVar27" identifier = identifier) ;) (expression_statement "uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42;" (assignment_expression "uVar18 = 0 << bVar42 | 1U >> 0x20 - bVar42" identifier = (binary_expression "0 << bVar42 | 1U >> 0x20 - bVar42" (binary_expression "0 << bVar42" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar42" number_literal >> (binary_expression "0x20 - bVar42" number_literal - identifier)))) ;) (if_statement "if ((uVar34 & 0x20) != 0) {\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }" if (parenthesized_expression "((uVar34 & 0x20) != 0)" ( (binary_expression "(uVar34 & 0x20) != 0" (parenthesized_expression "(uVar34 & 0x20)" ( (binary_expression "uVar34 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar16 = 0;\n                  uVar18 = uVar27;\n                }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = uVar27;" (assignment_expression "uVar18 = uVar27" identifier = identifier) ;) })) }))))) (labeled_statement "LAB_000a014b:\n              *(uint *)&pWVar47->maskSelf = uVar16;" statement_identifier : (expression_statement "*(uint *)&pWVar47->maskSelf = uVar16;" (assignment_expression "*(uint *)&pWVar47->maskSelf = uVar16" (pointer_expression "*(uint *)&pWVar47->maskSelf" * (cast_expression "(uint *)&pWVar47->maskSelf" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier)))) = identifier) ;)) (expression_statement "*(uint *)((int)&pWVar47->maskSelf + 4) = uVar18;" (assignment_expression "*(uint *)((int)&pWVar47->maskSelf + 4) = uVar18" (pointer_expression "*(uint *)((int)&pWVar47->maskSelf + 4)" * (cast_expression "(uint *)((int)&pWVar47->maskSelf + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pWVar47->maskSelf + 4)" ( (binary_expression "(int)&pWVar47->maskSelf + 4" (cast_expression "(int)&pWVar47->maskSelf" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pWVar47->maskSelf" & (field_expression "pWVar47->maskSelf" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "uVar5 = (pSVar48->fg).jointype;" (assignment_expression "uVar5 = (pSVar48->fg).jointype" identifier = (field_expression "(pSVar48->fg).jointype" (parenthesized_expression "(pSVar48->fg)" ( (field_expression "pSVar48->fg" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pSVar48->pTab->nModuleArg == 0) {\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }\n              else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }" if (parenthesized_expression "(pSVar48->pTab->nModuleArg == 0)" ( (binary_expression "pSVar48->pTab->nModuleArg == 0" (field_expression "pSVar48->pTab->nModuleArg" (field_expression "pSVar48->pTab" identifier -> field_identifier) -> field_identifier) == number_literal) )) (compound_statement "{\n                dequote = (Index *)0xa019d;\n                iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n              }" { (expression_statement "dequote = (Index *)0xa019d;" (assignment_expression "dequote = (Index *)0xa019d" identifier = (cast_expression "(Index *)0xa019d" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))\n                ;" (assignment_expression "iVar17 = whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))" identifier = (call_expression "whereLoopAddBtree(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))" identifier (argument_list "(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33))))" ( (pointer_expression "&sWLB" & identifier) , (call_expression "CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33)))" identifier (argument_list "(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar33)))" ( identifier , (call_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar33))" identifier (argument_list "(uVar59,CONCAT11(uVar57,uVar33))" ( identifier , (call_expression "CONCAT11(uVar57,uVar33)" identifier (argument_list "(uVar57,uVar33)" ( identifier , identifier ))) ))) ))) )))) ;) (expression_statement "uVar58 = 0;" (assignment_expression "uVar58 = 0" identifier = number_literal) ;) (expression_statement "uVar57 = 0;" (assignment_expression "uVar57 = 0" identifier = number_literal) ;) (expression_statement "uVar59 = 0;" (assignment_expression "uVar59 = 0" identifier = number_literal) ;) (expression_statement "in_stack_ffffff28 = (Parse *)0x0;" (assignment_expression "in_stack_ffffff28 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }" else (compound_statement "{\n                puVar36 = (undefined1 *)(pSVar48 + 1);\n                uVar58 = 0;\n                uVar57 = 0;\n                uVar59 = 0;\n                in_stack_ffffff28 = (Parse *)0x0;\n                while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }\nLAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));\n              }" { (expression_statement "puVar36 = (undefined1 *)(pSVar48 + 1);" (assignment_expression "puVar36 = (undefined1 *)(pSVar48 + 1)" identifier = (cast_expression "(undefined1 *)(pSVar48 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pSVar48 + 1)" ( (binary_expression "pSVar48 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar58 = 0;" (assignment_expression "uVar58 = 0" identifier = number_literal) ;) (expression_statement "uVar57 = 0;" (assignment_expression "uVar57 = 0" identifier = number_literal) ;) (expression_statement "uVar59 = 0;" (assignment_expression "uVar59 = 0" identifier = number_literal) ;) (expression_statement "in_stack_ffffff28 = (Parse *)0x0;" (assignment_expression "in_stack_ffffff28 = (Parse *)0x0" identifier = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (while_statement "while (puVar36 < pSVar3) {\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }" while (parenthesized_expression "(puVar36 < pSVar3)" ( (binary_expression "puVar36 < pSVar3" identifier < identifier) )) (compound_statement "{\nLAB_000a0d2c:\n                  puVar37 = puVar36;\n                  puVar36 = puVar36 + 0x44;\n                  if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }\n                  uVar16 = (pWVar13->sMaskSet).n;\n                  if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar16 = 1;\n                  uVar18 = 0;\nLAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;\n                  in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);\n                  uVar58 = (undefined1)uVar16;\n                  uVar57 = (undefined1)(uVar16 >> 8);\n                  uVar59 = (undefined2)(uVar16 >> 0x10);\n                }" { (labeled_statement "LAB_000a0d2c:\n                  puVar37 = puVar36;" statement_identifier : (expression_statement "puVar37 = puVar36;" (assignment_expression "puVar37 = puVar36" identifier = identifier) ;)) (expression_statement "puVar36 = puVar36 + 0x44;" (assignment_expression "puVar36 = puVar36 + 0x44" identifier = (binary_expression "puVar36 + 0x44" identifier + number_literal)) ;) (if_statement "if (in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0) {\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }" if (parenthesized_expression "(in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0)" ( (binary_expression "in_stack_ffffff28 == (Parse *)0x0 &&\n                      CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0" (binary_expression "in_stack_ffffff28 == (Parse *)0x0" identifier == (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) == 0" (call_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58))" identifier (argument_list "(uVar59,CONCAT11(uVar57,uVar58))" ( identifier , (call_expression "CONCAT11(uVar57,uVar58)" identifier (argument_list "(uVar57,uVar58)" ( identifier , identifier ))) ))) == number_literal)) )) (compound_statement "{\n                    while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }\n                  }" { (while_statement "while (puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0) {\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }" while (parenthesized_expression "(puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0)" ( (comma_expression "puVar36 = puVar37 + 0x44, (puVar37[0x24] & 10) == 0" (assignment_expression "puVar36 = puVar37 + 0x44" identifier = (binary_expression "puVar37 + 0x44" identifier + number_literal)) , (binary_expression "(puVar37[0x24] & 10) == 0" (parenthesized_expression "(puVar37[0x24] & 10)" ( (binary_expression "puVar37[0x24] & 10" (subscript_expression "puVar37[0x24]" identifier [ number_literal ]) & number_literal) )) == number_literal)) )) (compound_statement "{\n                      puVar37 = puVar36;\n                      if (pSVar3 <= puVar36) goto LAB_000a0d7c;\n                    }" { (expression_statement "puVar37 = puVar36;" (assignment_expression "puVar37 = puVar36" identifier = identifier) ;) (if_statement "if (pSVar3 <= puVar36) goto LAB_000a0d7c;" if (parenthesized_expression "(pSVar3 <= puVar36)" ( (binary_expression "pSVar3 <= puVar36" identifier <= identifier) )) (goto_statement "goto LAB_000a0d7c;" goto statement_identifier ;)) })) })) (expression_statement "uVar16 = (pWVar13->sMaskSet).n;" (assignment_expression "uVar16 = (pWVar13->sMaskSet).n" identifier = (field_expression "(pWVar13->sMaskSet).n" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((int)uVar16 < 1) {\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }" if (parenthesized_expression "((int)uVar16 < 1)" ( (binary_expression "(int)uVar16 < 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;\n                    goto LAB_000a0d2c;\n                  }" { (labeled_statement "LAB_000a0d70:\n                    if (pSVar3 <= puVar36) break;" statement_identifier : (if_statement "if (pSVar3 <= puVar36) break;" if (parenthesized_expression "(pSVar3 <= puVar36)" ( (binary_expression "pSVar3 <= puVar36" identifier <= identifier) )) (break_statement "break;" break ;))) (goto_statement "goto LAB_000a0d2c;" goto statement_identifier ;) })) (if_statement "if (*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]) {\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" if (parenthesized_expression "(*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0])" ( (binary_expression "*(int *)(puVar37 + 0x28) != (pWVar13->sMaskSet).ix[0]" (pointer_expression "*(int *)(puVar37 + 0x28)" * (cast_expression "(int *)(puVar37 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + 0x28)" ( (binary_expression "puVar37 + 0x28" identifier + number_literal) )))) != (subscript_expression "(pWVar13->sMaskSet).ix[0]" (field_expression "(pWVar13->sMaskSet).ix" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (compound_statement "{\n                    uVar18 = 0;\n                    while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (while_statement "while (uVar34 = uVar18 + 1, uVar16 != uVar34) {\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" while (parenthesized_expression "(uVar34 = uVar18 + 1, uVar16 != uVar34)" ( (comma_expression "uVar34 = uVar18 + 1, uVar16 != uVar34" (assignment_expression "uVar34 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) , (binary_expression "uVar16 != uVar34" identifier != identifier)) )) (compound_statement "{\n                      iVar17 = uVar18 + 1;\n                      uVar18 = uVar34;\n                      if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" { (expression_statement "iVar17 = uVar18 + 1;" (assignment_expression "iVar17 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = uVar34;" (assignment_expression "uVar18 = uVar34" identifier = identifier) ;) (if_statement "if (*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]) {\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" if (parenthesized_expression "(*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17])" ( (binary_expression "*(int *)(puVar37 + 0x28) == (pWVar13->sMaskSet).ix[iVar17]" (pointer_expression "*(int *)(puVar37 + 0x28)" * (cast_expression "(int *)(puVar37 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + 0x28)" ( (binary_expression "puVar37 + 0x28" identifier + number_literal) )))) == (subscript_expression "(pWVar13->sMaskSet).ix[iVar17]" (field_expression "(pWVar13->sMaskSet).ix" (parenthesized_expression "(pWVar13->sMaskSet)" ( (field_expression "pWVar13->sMaskSet" identifier -> field_identifier) )) . field_identifier) [ identifier ])) )) (compound_statement "{\n                        uVar16 = uVar34 >> 5 & 1;\n                        uVar18 = uVar16 << ((byte)uVar34 & 0x1f);\n                        uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" { (expression_statement "uVar16 = uVar34 >> 5 & 1;" (assignment_expression "uVar16 = uVar34 >> 5 & 1" identifier = (binary_expression "uVar34 >> 5 & 1" (binary_expression "uVar34 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar18 = uVar16 << ((byte)uVar34 & 0x1f);" (assignment_expression "uVar18 = uVar16 << ((byte)uVar34 & 0x1f)" identifier = (binary_expression "uVar16 << ((byte)uVar34 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar34 & 0x1f)" ( (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f);" (assignment_expression "uVar16 = (uVar16 ^ 1) << ((byte)uVar34 & 0x1f)" identifier = (binary_expression "(uVar16 ^ 1) << ((byte)uVar34 & 0x1f)" (parenthesized_expression "(uVar16 ^ 1)" ( (binary_expression "uVar16 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar34 & 0x1f)" ( (binary_expression "(byte)uVar34 & 0x1f" (cast_expression "(byte)uVar34" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (goto_statement "goto LAB_000a0dc9;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_000a0d70;" goto statement_identifier ;) })) (expression_statement "uVar16 = 1;" (assignment_expression "uVar16 = 1" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a0dc9:\n                  uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;" statement_identifier : (expression_statement "uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16;" (assignment_expression "uVar16 = CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16" identifier = (binary_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58)) | uVar16" (call_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58))" identifier (argument_list "(uVar59,CONCAT11(uVar57,uVar58))" ( identifier , (call_expression "CONCAT11(uVar57,uVar58)" identifier (argument_list "(uVar57,uVar58)" ( identifier , identifier ))) ))) | identifier)) ;)) (expression_statement "in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18);" (assignment_expression "in_stack_ffffff28 = (Parse *)((uint)in_stack_ffffff28 | uVar18)" identifier = (cast_expression "(Parse *)((uint)in_stack_ffffff28 | uVar18)" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)in_stack_ffffff28 | uVar18)" ( (binary_expression "(uint)in_stack_ffffff28 | uVar18" (cast_expression "(uint)in_stack_ffffff28" ( (type_descriptor "uint" type_identifier) ) identifier) | identifier) )))) ;) (expression_statement "uVar58 = (undefined1)uVar16;" (assignment_expression "uVar58 = (undefined1)uVar16" identifier = (cast_expression "(undefined1)uVar16" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "uVar57 = (undefined1)(uVar16 >> 8);" (assignment_expression "uVar57 = (undefined1)(uVar16 >> 8)" identifier = (call_expression "(undefined1)(uVar16 >> 8)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "(uVar16 >> 8)" ( (binary_expression "uVar16 >> 8" identifier >> number_literal) )))) ;) (expression_statement "uVar59 = (undefined2)(uVar16 >> 0x10);" (assignment_expression "uVar59 = (undefined2)(uVar16 >> 0x10)" identifier = (call_expression "(undefined2)(uVar16 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar16 >> 0x10)" ( (binary_expression "uVar16 >> 0x10" identifier >> number_literal) )))) ;) })) (labeled_statement "LAB_000a0d7c:\n                iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));" statement_identifier : (expression_statement "iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))));" (assignment_expression "iVar17 = whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))))" identifier = (call_expression "whereLoopAddVirtual((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))))" identifier (argument_list "((WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58)),\n                                             CONCAT44(pToken,in_stack_ffffff28),\n                                             CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))))" ( (cast_expression "(WhereLoopBuilder *)\n                                             CONCAT22(uVar59,CONCAT11(uVar57,uVar58))" ( (type_descriptor "WhereLoopBuilder *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58))" identifier (argument_list "(uVar59,CONCAT11(uVar57,uVar58))" ( identifier , (call_expression "CONCAT11(uVar57,uVar58)" identifier (argument_list "(uVar57,uVar58)" ( identifier , identifier ))) )))) , (call_expression "CONCAT44(pToken,in_stack_ffffff28)" identifier (argument_list "(pToken,in_stack_ffffff28)" ( identifier , identifier ))) , (call_expression "CONCAT26(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     )))" identifier (argument_list "(uVar59,CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     )))" ( identifier , (call_expression "CONCAT15(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))" identifier (argument_list "(uVar57,CONCAT14(uVar58,dequote\n                                                                                     ))" ( identifier , (call_expression "CONCAT14(uVar58,dequote\n                                                                                     )" identifier (argument_list "(uVar58,dequote\n                                                                                     )" ( identifier , identifier ))) ))) ))) )))) ;)) }))) (if_statement "if ((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))) {\n                if (db_00->mallocFailed != '\0') break;\n              }\n              else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }" if (parenthesized_expression "((iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0))))" ( (binary_expression "(iVar17 == 0) &&\n                 (((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))" (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) && (parenthesized_expression "(((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)))" ( (parenthesized_expression "((sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0))" ( (binary_expression "(sWLB.pWC)->hasOr == '\0' ||\n                  (iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)" (binary_expression "(sWLB.pWC)->hasOr == '\0'" (field_expression "(sWLB.pWC)->hasOr" (parenthesized_expression "(sWLB.pWC)" ( (field_expression "sWLB.pWC" identifier . field_identifier) )) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0)" ( (comma_expression "iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken)), iVar17 == 0" (assignment_expression "iVar17 = whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken))" identifier = (call_expression "whereLoopAddOr(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken))" identifier (argument_list "(&sWLB,CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58))),\n                                           CONCAT44(dequote,pToken))" ( (pointer_expression "&sWLB" & identifier) , (call_expression "CONCAT44(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58)))" identifier (argument_list "(in_stack_ffffff28,\n                                                          CONCAT22(uVar59,CONCAT11(uVar57,uVar58)))" ( identifier , (call_expression "CONCAT22(uVar59,CONCAT11(uVar57,uVar58))" identifier (argument_list "(uVar59,CONCAT11(uVar57,uVar58))" ( identifier , (call_expression "CONCAT11(uVar57,uVar58)" identifier (argument_list "(uVar57,uVar58)" ( identifier , identifier ))) ))) ))) , (call_expression "CONCAT44(dequote,pToken)" identifier (argument_list "(dequote,pToken)" ( identifier , identifier ))) )))) , (binary_expression "iVar17 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n                if (db_00->mallocFailed != '\0') break;\n              }" { (if_statement "if (db_00->mallocFailed != '\0') break;" if (parenthesized_expression "(db_00->mallocFailed != '\0')" ( (binary_expression "db_00->mallocFailed != '\0'" (field_expression "db_00->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }" else (compound_statement "{\n                if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }\n                sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));\n              }" { (if_statement "if (iVar17 != 0x65) {\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }" if (parenthesized_expression "(iVar17 != 0x65)" ( (binary_expression "iVar17 != 0x65" identifier != number_literal) )) (compound_statement "{\n                  whereLoopClear(db_00,pWVar47);\n                  goto LAB_000a0bd0;\n                }" { (expression_statement "whereLoopClear(db_00,pWVar47);" (call_expression "whereLoopClear(db_00,pWVar47)" identifier (argument_list "(db_00,pWVar47)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;) })) (expression_statement "sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219));" (call_expression "sqlite3_log(0x1c,(char *)(unaff_EDI + 0x66219))" identifier (argument_list "(0x1c,(char *)(unaff_EDI + 0x66219))" ( number_literal , (cast_expression "(char *)(unaff_EDI + 0x66219)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x66219)" ( (binary_expression "unaff_EDI + 0x66219" identifier + number_literal) ))) ))) ;) }))) (expression_statement "uVar12 = uVar12 + '\x01';" (assignment_expression "uVar12 = uVar12 + '\x01'" identifier = (binary_expression "uVar12 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "pSVar48 = pSVar48 + 1;" (assignment_expression "pSVar48 = pSVar48 + 1" identifier = (binary_expression "pSVar48 + 1" identifier + number_literal)) ;) (expression_statement "uVar33 = uVar5;" (assignment_expression "uVar33 = uVar5" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar48 < pSVar3)" ( (binary_expression "pSVar48 < pSVar3" identifier < identifier) )) ;) })) (expression_statement "whereLoopClear(db_00,pWVar47);" (call_expression "whereLoopClear(db_00,pWVar47)" identifier (argument_list "(db_00,pWVar47)" ( identifier , identifier ))) ;) (expression_statement "dequote = (Index *)0xa01fb;" (assignment_expression "dequote = (Index *)0xa01fb" identifier = (cast_expression "(Index *)0xa01fb" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "wherePathSolver(local_d0,0);" (call_expression "wherePathSolver(local_d0,0)" identifier (argument_list "(local_d0,0)" ( identifier , number_literal ))) ;) (if_statement "if (db->mallocFailed == '\0') {\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;\n            dequote = (Index *)0xa022b;\n            wherePathSolver(local_d0,local_d0->nRowOut + 1);\n            if (db->mallocFailed == '\0') goto LAB_000a0239;\n          }" { (if_statement "if (local_d0->pOrderBy == (ExprList *)0x0) goto LAB_000a0ea8;" if (parenthesized_expression "(local_d0->pOrderBy == (ExprList *)0x0)" ( (binary_expression "local_d0->pOrderBy == (ExprList *)0x0" (field_expression "local_d0->pOrderBy" identifier -> field_identifier) == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a0ea8;" goto statement_identifier ;)) (expression_statement "dequote = (Index *)0xa022b;" (assignment_expression "dequote = (Index *)0xa022b" identifier = (cast_expression "(Index *)0xa022b" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "wherePathSolver(local_d0,local_d0->nRowOut + 1);" (call_expression "wherePathSolver(local_d0,local_d0->nRowOut + 1)" identifier (argument_list "(local_d0,local_d0->nRowOut + 1)" ( identifier , (binary_expression "local_d0->nRowOut + 1" (field_expression "local_d0->nRowOut" identifier -> field_identifier) + number_literal) ))) ;) (if_statement "if (db->mallocFailed == '\0') goto LAB_000a0239;" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0239;" goto statement_identifier ;)) })) }))) })) (labeled_statement "LAB_000a0bd0:\n      pParse_00->nQueryLoop = local_d0->savedNQueryLoop;" statement_identifier : (expression_statement "pParse_00->nQueryLoop = local_d0->savedNQueryLoop;" (assignment_expression "pParse_00->nQueryLoop = local_d0->savedNQueryLoop" (field_expression "pParse_00->nQueryLoop" identifier -> field_identifier) = (field_expression "local_d0->savedNQueryLoop" identifier -> field_identifier)) ;)) (expression_statement "whereInfoFree(db,local_d0);" (call_expression "whereInfoFree(db,local_d0)" identifier (argument_list "(db,local_d0)" ( identifier , identifier ))) ;) }) (else_clause "else if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }" else (if_statement "if (local_d0 != (WhereInfo *)0x0) {\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(local_d0 != (WhereInfo *)0x0)" ( (binary_expression "local_d0 != (WhereInfo *)0x0" identifier != (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3DbFreeNN(db,local_d0);\n      local_d0 = (WhereInfo *)0x0;\n      goto LAB_000a0bf2;\n    }" { (expression_statement "sqlite3DbFreeNN(db,local_d0);" (call_expression "sqlite3DbFreeNN(db,local_d0)" identifier (argument_list "(db,local_d0)" ( identifier , identifier ))) ;) (expression_statement "local_d0 = (WhereInfo *)0x0;" (assignment_expression "local_d0 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })))) })) (expression_statement "local_d0 = (WhereInfo *)0x0;" (assignment_expression "local_d0 = (WhereInfo *)0x0" identifier = (cast_expression "(WhereInfo *)0x0" ( (type_descriptor "WhereInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0bf2:\n  if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar7 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar7 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar7 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_d0;" return identifier ;) (labeled_statement "LAB_000a14dd:\n  iVar43 = (int)pIVar50->aiColumn[uVar16];" statement_identifier : (expression_statement "iVar43 = (int)pIVar50->aiColumn[uVar16];" (assignment_expression "iVar43 = (int)pIVar50->aiColumn[uVar16]" identifier = (cast_expression "(int)pIVar50->aiColumn[uVar16]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pIVar50->aiColumn[uVar16]" (field_expression "pIVar50->aiColumn" identifier -> field_identifier) [ identifier ]))) ;)) (if_statement "if (iVar43 < 0) {\n    if (iVar43 != -1) goto LAB_000a14f9;\n  }\n  else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(iVar43 < 0)" ( (binary_expression "iVar43 < 0" identifier < number_literal) )) (compound_statement "{\n    if (iVar43 != -1) goto LAB_000a14f9;\n  }" { (if_statement "if (iVar43 != -1) goto LAB_000a14f9;" if (parenthesized_expression "(iVar43 != -1)" ( (binary_expression "iVar43 != -1" identifier != number_literal) )) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;)) }) (else_clause "else if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }" else (if_statement "if (pIVar50->pTable->aCol[iVar43].notNull == '\0') {\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(pIVar50->pTable->aCol[iVar43].notNull == '\0')" ( (binary_expression "pIVar50->pTable->aCol[iVar43].notNull == '\0'" (field_expression "pIVar50->pTable->aCol[iVar43].notNull" (subscript_expression "pIVar50->pTable->aCol[iVar43]" (field_expression "pIVar50->pTable->aCol" (field_expression "pIVar50->pTable" identifier -> field_identifier) -> field_identifier) [ identifier ]) . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;\n    goto LAB_000a13d9;\n  }" { (labeled_statement "LAB_000a14f9:\n    uVar18 = (uint)pIVar50->nKeyCol;" statement_identifier : (expression_statement "uVar18 = (uint)pIVar50->nKeyCol;" (assignment_expression "uVar18 = (uint)pIVar50->nKeyCol" identifier = (cast_expression "(uint)pIVar50->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->nKeyCol" identifier -> field_identifier))) ;)) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })))) (labeled_statement "LAB_000a1320:\n  uVar18 = (uint)pIVar50->nKeyCol;" statement_identifier : (expression_statement "uVar18 = (uint)pIVar50->nKeyCol;" (assignment_expression "uVar18 = (uint)pIVar50->nKeyCol" identifier = (cast_expression "(uint)pIVar50->nKeyCol" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIVar50->nKeyCol" identifier -> field_identifier))) ;)) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (if_statement "if ((int)uVar18 <= (int)uVar16) goto LAB_000a13d9;" if (parenthesized_expression "((int)uVar18 <= (int)uVar16)" ( (binary_expression "(int)uVar18 <= (int)uVar16" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a132f;" goto statement_identifier ;) (labeled_statement "LAB_000a13d9:\n  if (uVar16 == uVar18) goto LAB_000a13e1;" statement_identifier : (if_statement "if (uVar16 == uVar18) goto LAB_000a13e1;" if (parenthesized_expression "(uVar16 == uVar18)" ( (binary_expression "uVar16 == uVar18" identifier == identifier) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;))) (labeled_statement "LAB_000a12f0:\n  pIVar50 = pIVar50->pNext;" statement_identifier : (expression_statement "pIVar50 = pIVar50->pNext;" (assignment_expression "pIVar50 = pIVar50->pNext" identifier = (field_expression "pIVar50->pNext" identifier -> field_identifier)) ;)) (if_statement "if (pIVar50 == (Index *)0x0) goto LAB_000a1530;" if (parenthesized_expression "(pIVar50 == (Index *)0x0)" ( (binary_expression "pIVar50 == (Index *)0x0" identifier == (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a1530;" goto statement_identifier ;)) (goto_statement "goto LAB_000a12fb;" goto statement_identifier ;) })))
(translation_unit "int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)\n\n{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}\n\n" (function_definition "int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)\n\n{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" primitive_type (pointer_declarator "* FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" * (function_declarator "FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" identifier (parameter_list "(int *param_1,int *param_2,ushort param_3,int param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "ushort param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) )))) (compound_statement "{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "ushort uVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "undefined2 uVar9;" type_identifier identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "char *pcVar21;" primitive_type (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "undefined1 uVar24;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "ushort uVar29;" type_identifier identifier ;) (declaration "int *piVar30;" primitive_type (pointer_declarator "*piVar30" * identifier) ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "uint uVar33;" type_identifier identifier ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "undefined2 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar39;" primitive_type identifier ;) (declaration "undefined8 uVar40;" type_identifier identifier ;) (declaration "ulonglong uVar41;" type_identifier identifier ;) (declaration "ulonglong uVar42;" type_identifier identifier ;) (declaration "uint uVar43;" type_identifier identifier ;) (declaration "uint local_d8;" type_identifier identifier ;) (declaration "int *local_d0;" primitive_type (pointer_declarator "*local_d0" * identifier) ;) (declaration "uint local_cc;" type_identifier identifier ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "uint local_bc;" type_identifier identifier ;) (declaration "int *local_b8;" primitive_type (pointer_declarator "*local_b8" * identifier) ;) (declaration "int *local_b4;" primitive_type (pointer_declarator "*local_b4" * identifier) ;) (declaration "uint local_a8;" type_identifier identifier ;) (declaration "int local_a0;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "undefined *local_84;" type_identifier (pointer_declarator "*local_84" * identifier) ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "undefined2 local_70;" type_identifier identifier ;) (declaration "int *local_58 [3];" primitive_type (pointer_declarator "*local_58 [3]" * (array_declarator "local_58 [3]" identifier [ number_literal ])) ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c [5];" primitive_type (array_declarator "local_3c [5]" identifier [ number_literal ]) ;) (declaration "char local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar40 = FUN_0001af1a();" (assignment_expression "uVar40 = FUN_0001af1a()" identifier = (call_expression "FUN_0001af1a()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar30 = (int *)((ulonglong)uVar40 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar40 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar40 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar40 >> 0x20)" ( (binary_expression "(ulonglong)uVar40 >> 0x20" (cast_expression "(ulonglong)uVar40" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "piVar10 = (int *)uVar40;" (assignment_expression "piVar10 = (int *)uVar40" identifier = (cast_expression "(int *)uVar40" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" identifier = identifier) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = piVar10[2];" (assignment_expression "iVar3 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);" do (compound_statement "{\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)local_58 + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_58 + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_58 + uVar11)" * (cast_expression "(undefined4 *)((int)local_58 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58 + uVar11)" ( (binary_expression "(int)local_58 + uVar11" (cast_expression "(int)local_58" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" identifier = (binary_expression "uVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < 0x1c)" ( (binary_expression "uVar11 < 0x1c" identifier < number_literal) )) ;) (if_statement "if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }" if (parenthesized_expression "((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40))" ( (binary_expression "(param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)" (parenthesized_expression "(param_1 != (int *)0x0)" ( (binary_expression "param_1 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_b4 = (int *)0x0, *param_1 < 0x40)" ( (comma_expression "local_b4 = (int *)0x0, *param_1 < 0x40" (assignment_expression "local_b4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "*param_1 < 0x40" (pointer_expression "*param_1" * identifier) < number_literal)) ))) )) (compound_statement "{\n    local_b4 = param_1;\n  }" { (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" identifier = identifier) ;) })) (expression_statement "local_58[2] = local_b4;" (assignment_expression "local_58[2] = local_b4" (subscript_expression "local_58[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar29 = param_3 & 0xfeff;" (assignment_expression "uVar29 = param_3 & 0xfeff" identifier = (binary_expression "param_3 & 0xfeff" identifier & number_literal)) ;) (if_statement "if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x48) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x48) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x48) & 0x10)" ( (binary_expression "*(byte *)(iVar4 + 0x48) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x48)" * (cast_expression "(byte *)(iVar4 + 0x48)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x48)" ( (binary_expression "iVar4 + 0x48" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar29 = param_3;\n  }" { (expression_statement "uVar29 = param_3;" (assignment_expression "uVar29 = param_3" identifier = identifier) ;) })) (expression_statement "local_a0 = *piVar30;" (assignment_expression "local_a0 = *piVar30" identifier = (pointer_expression "*piVar30" * identifier)) ;) (if_statement "if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" if (parenthesized_expression "(0x40 < local_a0)" ( (binary_expression "0x40 < local_a0" number_literal < identifier) )) (compound_statement "{\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" { (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40)" identifier (argument_list "(piVar10,unaff_EDI + 0x59c10,0x40)" ( identifier , (binary_expression "unaff_EDI + 0x59c10" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) (expression_statement "uVar6 = uVar29 & 0x20;" (assignment_expression "uVar6 = uVar29 & 0x20" identifier = (binary_expression "uVar29 & 0x20" identifier & number_literal)) ;) (if_statement "if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" if (parenthesized_expression "((uVar29 & 0x20) == 0)" ( (binary_expression "(uVar29 & 0x20) == 0" (parenthesized_expression "(uVar29 & 0x20)" ( (binary_expression "uVar29 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }" { (expression_statement "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;" (assignment_expression "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" identifier = (binary_expression "(local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" (binary_expression "(local_a0 + -1) * 0x44 + 0x337U" (binary_expression "(local_a0 + -1) * 0x44" (parenthesized_expression "(local_a0 + -1)" ( (binary_expression "local_a0 + -1" identifier + number_literal) )) * number_literal) + number_literal) & number_literal)) ;) }) (else_clause "else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" else (compound_statement "{\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" { (expression_statement "uVar11 = 0x330;" (assignment_expression "uVar11 = 0x330" identifier = number_literal) ;) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" identifier = number_literal) ;) }))) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" { (expression_statement "local_d0 = (int *)FUN_000283a0();" (assignment_expression "local_d0 = (int *)FUN_000283a0()" identifier = (cast_expression "(int *)FUN_000283a0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000283a0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }" { (expression_statement "*(undefined8 *)local_d0 = uVar40;" (assignment_expression "*(undefined8 *)local_d0 = uVar40" (pointer_expression "*(undefined8 *)local_d0" * (cast_expression "(undefined8 *)local_d0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "local_d0[2] = (int)local_b4;" (assignment_expression "local_d0[2] = (int)local_b4" (subscript_expression "local_d0[2]" identifier [ number_literal ]) = (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_d0[3] = (int)param_2;" (assignment_expression "local_d0[3] = (int)param_2" (subscript_expression "local_d0[3]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_d0[4] = extraout_ECX;" (assignment_expression "local_d0[4] = extraout_ECX" (subscript_expression "local_d0[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[7] = -1;" (assignment_expression "local_d0[7] = -1" (subscript_expression "local_d0[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[6] = -1;" (assignment_expression "local_d0[6] = -1" (subscript_expression "local_d0[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x2e)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x2e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(undefined1)local_a0" ( (type_descriptor "undefined1" type_identifier) ) identifier)) ;) (expression_statement "iVar12 = piVar10[0xe] + -1;" (assignment_expression "iVar12 = piVar10[0xe] + -1" identifier = (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar12;" (assignment_expression "piVar10[0xe] = iVar12" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[8] = iVar12;" (assignment_expression "local_d0[8] = iVar12" (subscript_expression "local_d0[8]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_d0[9] = iVar12;" (assignment_expression "local_d0[9] = iVar12" (subscript_expression "local_d0[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(ushort *)(local_d0 + 0xb) = uVar29;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = uVar29" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4;" (assignment_expression "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4" (pointer_expression "*(undefined2 *)(local_d0 + 5)" * (cast_expression "(undefined2 *)(local_d0 + 5)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 5)" ( (binary_expression "local_d0 + 5" identifier + number_literal) )))) = (cast_expression "(undefined2)param_4" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_d0[10] = piVar10[0x20];" (assignment_expression "local_d0[10] = piVar10[0x20]" (subscript_expression "local_d0[10]" identifier [ number_literal ]) = (subscript_expression "piVar10[0x20]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)local_d0 + 0x2f) = 0;" (assignment_expression "*(undefined4 *)((int)local_d0 + 0x2f) = 0" (pointer_expression "*(undefined4 *)((int)local_d0 + 0x2f)" * (cast_expression "(undefined4 *)((int)local_d0 + 0x2f)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2f)" ( (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;" (assignment_expression "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc" identifier = (binary_expression "(int)local_d0 + 0x33U & 0xfffffffc" (binary_expression "(int)local_d0 + 0x33U" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal)) ;) (expression_statement "local_d0[0x12] = 0;" (assignment_expression "local_d0[0x12] = 0" (subscript_expression "local_d0[0x12]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));" do (compound_statement "{\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      }" { (expression_statement "*(undefined4 *)(uVar25 + uVar13) = 0;" (assignment_expression "*(undefined4 *)(uVar25 + uVar13) = 0" (pointer_expression "*(undefined4 *)(uVar25 + uVar13)" * (cast_expression "(undefined4 *)(uVar25 + uVar13)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 + uVar13)" ( (binary_expression "uVar25 + uVar13" identifier + identifier) )))) = number_literal) ;) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" identifier = (binary_expression "uVar13 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc))" ( (binary_expression "uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" identifier < (parenthesized_expression "((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" ( (binary_expression "(int)local_d0 + (0x4c - uVar25) & 0xfffffffc" (binary_expression "(int)local_d0 + (0x4c - uVar25)" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(0x4c - uVar25)" ( (binary_expression "0x4c - uVar25" number_literal - identifier) ))) & number_literal) ))) )) ;) (expression_statement "local_b8 = local_d0 + 0xbb;" (assignment_expression "local_b8 = local_d0 + 0xbb" identifier = (binary_expression "local_d0 + 0xbb" identifier + number_literal)) ;) (expression_statement "iVar12 = uVar11 + (int)local_d0;" (assignment_expression "iVar12 = uVar11 + (int)local_d0" identifier = (binary_expression "uVar11 + (int)local_d0" identifier + (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "memset(local_b8,0,(local_a0 + 1) * 0x44);" (call_expression "memset(local_b8,0,(local_a0 + 1) * 0x44)" identifier (argument_list "(local_b8,0,(local_a0 + 1) * 0x44)" ( identifier , number_literal , (binary_expression "(local_a0 + 1) * 0x44" (parenthesized_expression "(local_a0 + 1)" ( (binary_expression "local_a0 + 1" identifier + number_literal) )) * number_literal) ))) ;) (expression_statement "local_58[1] = local_d0 + 0x13;" (assignment_expression "local_58[1] = local_d0 + 0x13" (subscript_expression "local_58[1]" identifier [ number_literal ]) = (binary_expression "local_d0 + 0x13" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar12 + 0x30) = iVar12 + 0x38;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar12 + 0x38" (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) )))) = (binary_expression "iVar12 + 0x38" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x28) = 0;" (assignment_expression "*(undefined2 *)(iVar12 + 0x28) = 0" (pointer_expression "*(undefined2 *)(iVar12 + 0x28)" * (cast_expression "(undefined2 *)(iVar12 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar12 + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(iVar12 + 0x2c) = 3" (pointer_expression "*(undefined2 *)(iVar12 + 0x2c)" * (cast_expression "(undefined2 *)(iVar12 + 0x2c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2c)" ( (binary_expression "iVar12 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar12 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x24)" * (cast_expression "(undefined4 *)(iVar12 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x24)" ( (binary_expression "iVar12 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_d0[0x18] = (int)(local_d0 + 0x19);" (assignment_expression "local_d0[0x18] = (int)(local_d0 + 0x19)" (subscript_expression "local_d0[0x18]" identifier [ number_literal ]) = (cast_expression "(int)(local_d0 + 0x19)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_d0 + 0x19)" ( (binary_expression "local_d0 + 0x19" identifier + number_literal) )))) ;) (expression_statement "local_d0[0x7a] = 0;" (assignment_expression "local_d0[0x7a] = 0" (subscript_expression "local_d0[0x7a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x13] = (int)local_d0;" (assignment_expression "local_d0[0x13] = (int)local_d0" (subscript_expression "local_d0[0x13]" identifier [ number_literal ]) = (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(undefined1 *)((int)local_d0 + 0x55) = 0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x55) = 0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x55)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x55)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x55)" ( (binary_expression "(int)local_d0 + 0x55" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_d0[0x14] = 0;" (assignment_expression "local_d0[0x14] = 0" (subscript_expression "local_d0[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x16] = 0;" (assignment_expression "local_d0[0x16] = 0" (subscript_expression "local_d0[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x17] = 8;" (assignment_expression "local_d0[0x17] = 8" (subscript_expression "local_d0[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_58[0] = local_d0;" (assignment_expression "local_58[0] = local_d0" (subscript_expression "local_58[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_4c = iVar12;" (assignment_expression "local_4c = iVar12" identifier = identifier) ;) (expression_statement "FUN_0003ab70();" (call_expression "FUN_0003ab70()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" if (parenthesized_expression "(local_a0 == 0)" ( (binary_expression "local_a0 == 0" identifier == number_literal) )) (compound_statement "{\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }" { (if_statement "if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" if (parenthesized_expression "(local_b4 != (int *)0x0)" ( (binary_expression "local_b4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" { (expression_statement "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4;" (assignment_expression "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4" (pointer_expression "*(char *)((int)local_d0 + 0x2f)" * (cast_expression "(char *)((int)local_d0 + 0x2f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2f)" ( (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*local_b4" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_b4" * identifier))) ;) })) (if_statement "if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" if (parenthesized_expression "((uVar29 & 0x100) != 0)" ( (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" { (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);" (call_expression "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c)" identifier (argument_list "(piVar10,0,unaff_EDI + 0x59c2c)" ( identifier , number_literal , (binary_expression "unaff_EDI + 0x59c2c" identifier + number_literal) ))) ;) }) (else_clause "else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" else (compound_statement "{\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" { (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (expression_statement "piVar17 = piVar30 + 6;" (assignment_expression "piVar17 = piVar30 + 6" identifier = (binary_expression "piVar30 + 6" identifier + number_literal)) ;) (do_statement "do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);" do (compound_statement "{\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        }" { (expression_statement "iVar12 = piVar17[6];" (assignment_expression "iVar12 = piVar17[6]" identifier = (subscript_expression "piVar17[6]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = local_d0[0x7a];" (assignment_expression "iVar38 = local_d0[0x7a]" identifier = (subscript_expression "local_d0[0x7a]" identifier [ number_literal ])) ;) (expression_statement "local_d0[0x7a] = iVar38 + 1;" (assignment_expression "local_d0[0x7a] = iVar38 + 1" (subscript_expression "local_d0[0x7a]" identifier [ number_literal ]) = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "local_d0[iVar38 + 0x7b] = iVar12;" (assignment_expression "local_d0[iVar38 + 0x7b] = iVar12" (subscript_expression "local_d0[iVar38 + 0x7b]" identifier [ (binary_expression "iVar38 + 0x7b" identifier + number_literal) ]) = identifier) ;) (if_statement "if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" if (parenthesized_expression "((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34))" ( (binary_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)" (parenthesized_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0))" ( (binary_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" (parenthesized_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4)" ( (binary_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" * (cast_expression "(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar30 + local_bc * 0x44 + 0x2d)" ( (binary_expression "(int)piVar30 + local_bc * 0x44 + 0x2d" (binary_expression "(int)piVar30 + local_bc * 0x44" (cast_expression "(int)piVar30" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "local_bc * 0x44" identifier * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" ( (comma_expression "piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0" (assignment_expression "piVar34 = (int *)piVar17[0xb]" identifier = (cast_expression "(int *)piVar17[0xb]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[0xb]" identifier [ number_literal ]))) , (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(0 < *piVar34)" ( (binary_expression "0 < *piVar34" number_literal < (pointer_expression "*piVar34" * identifier)) ))) )) (compound_statement "{\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" { (expression_statement "puVar22 = (undefined4 *)*piVar17;" (assignment_expression "puVar22 = (undefined4 *)*piVar17" identifier = (cast_expression "(undefined4 *)*piVar17" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (do_statement "do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);" do (compound_statement "{\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            }" { (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" if (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar12)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar12" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" { (labeled_statement "LAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" statement_identifier : (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" identifier (argument_list "(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" ( identifier , (binary_expression "unaff_EDI + 0x6623d" identifier + number_literal) , (pointer_expression "*puVar22" * identifier) , identifier ))) ;)) (break_statement "break;" break ;) })) (expression_statement "iVar16 = iVar12;" (assignment_expression "iVar16 = iVar12" identifier = identifier) ;) (while_statement "while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }" while (parenthesized_expression "((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0)" ( (binary_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2)" ( (binary_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2" (pointer_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" * (cast_expression "(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22[1] + 0xf + iVar16 * 0x10)" ( (binary_expression "puVar22[1] + 0xf + iVar16 * 0x10" (binary_expression "puVar22[1] + 0xf" (subscript_expression "puVar22[1]" identifier [ number_literal ]) + number_literal) + (binary_expression "iVar16 * 0x10" identifier * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }" { (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;" if (parenthesized_expression "(iVar16 == *(short *)((int)puVar22 + 0x2a))" ( (binary_expression "iVar16 == *(short *)((int)puVar22 + 0x2a)" identifier == (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (goto_statement "goto LAB_000a0e38;" goto statement_identifier ;)) })) (expression_statement "iVar14 = FUN_00028ce0(0);" (assignment_expression "iVar14 = FUN_00028ce0(0)" identifier = (call_expression "FUN_00028ce0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar12 = iVar16 + 1;" (assignment_expression "iVar12 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(iVar14 + 0x1c) = piVar17[6];" (assignment_expression "*(int *)(iVar14 + 0x1c) = piVar17[6]" (pointer_expression "*(int *)(iVar14 + 0x1c)" * (cast_expression "(int *)(iVar14 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x1c)" ( (binary_expression "iVar14 + 0x1c" identifier + number_literal) )))) = (subscript_expression "piVar17[6]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar14 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar14 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar14 + 0x20)" * (cast_expression "(int *)(iVar14 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(iVar14 + 0x30) = puVar22;" (assignment_expression "*(undefined4 **)(iVar14 + 0x30) = puVar22" (pointer_expression "*(undefined4 **)(iVar14 + 0x30)" * (cast_expression "(undefined4 **)(iVar14 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar14 + 0x30)" ( (binary_expression "iVar14 + 0x30" identifier + number_literal) )))) = identifier) ;) (if_statement "if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }" if (parenthesized_expression "(piVar34[iVar38 * 5 + 1] != 0)" ( (binary_expression "piVar34[iVar38 * 5 + 1] != 0" (subscript_expression "piVar34[iVar38 * 5 + 1]" identifier [ (binary_expression "iVar38 * 5 + 1" (binary_expression "iVar38 * 5" identifier * number_literal) + number_literal) ]) != number_literal) )) (compound_statement "{\n                FUN_0003dcd0(0);\n              }" { (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) })) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = FUN_00059ec0(0);" (assignment_expression "uVar15 = FUN_00059ec0(0)" identifier = (call_expression "FUN_00059ec0(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (expression_statement "FUN_00059ec0(uVar15);" (call_expression "FUN_00059ec0(uVar15)" identifier (argument_list "(uVar15)" ( identifier ))) ;) (expression_statement "FUN_0003a8b0();" (call_expression "FUN_0003a8b0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "(iVar38 < *piVar34)" ( (binary_expression "iVar38 < *piVar34" identifier < (pointer_expression "*piVar34" * identifier)) )) ;) })) (expression_statement "local_bc = local_bc + 1;" (assignment_expression "local_bc = local_bc + 1" identifier = (binary_expression "local_bc + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" identifier = (binary_expression "piVar17 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)local_bc < *piVar30)" ( (binary_expression "(int)local_bc < *piVar30" (cast_expression "(int)local_bc" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*piVar30" * identifier)) )) ;) }))) (expression_statement "iVar12 = local_d0[0x16];" (assignment_expression "iVar12 = local_d0[0x16]" identifier = (subscript_expression "local_d0[0x16]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = iVar12 + -1;" (assignment_expression "iVar38 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;) (if_statement "if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" if (parenthesized_expression "(-1 < iVar38)" ( (binary_expression "-1 < iVar38" number_literal < identifier) )) (compound_statement "{\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" { (do_statement "do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);" do (compound_statement "{\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        }" { (expression_statement "iVar38 = iVar38 + -1;" (assignment_expression "iVar38 = iVar38 + -1" identifier = (binary_expression "iVar38 + -1" identifier + number_literal)) ;) (expression_statement "FUN_0009a5f0(iVar12);" (call_expression "FUN_0009a5f0(iVar12)" identifier (argument_list "(iVar12)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar38 != -1)" ( (binary_expression "iVar38 != -1" identifier != number_literal) )) ;) })) (expression_statement "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));" (assignment_expression "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" identifier = (call_expression "CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" identifier (argument_list "((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" ( (call_expression "(int3)((uint)iVar12 >> 8)" (parenthesized_expression "(int3)" ( identifier )) (argument_list "((uint)iVar12 >> 8)" ( (binary_expression "(uint)iVar12 >> 8" (cast_expression "(uint)iVar12" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) , (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) )))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" { (if_statement "if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" if (parenthesized_expression "(0 < local_58[1][3])" ( (binary_expression "0 < local_58[1][3]" number_literal < (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ])) )) (compound_statement "{\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) ;) (do_statement "do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);" do (compound_statement "{\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          }" { (expression_statement "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);" (assignment_expression "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5])" identifier = (cast_expression "(int *)(iVar12 * 0x30 + piVar17[5])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 * 0x30 + piVar17[5])" ( (binary_expression "iVar12 * 0x30 + piVar17[5]" (binary_expression "iVar12 * 0x30" identifier * number_literal) + (subscript_expression "piVar17[5]" identifier [ number_literal ])) )))) ;) (if_statement "if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" if (parenthesized_expression "(((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               )" ( (binary_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)" (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" ( (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" ( (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" * (cast_expression "(byte *)((int)piVar34 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(piVar34[0xb] == 0 && piVar34[10] == 0)" ( (binary_expression "piVar34[0xb] == 0 && piVar34[10] == 0" (binary_expression "piVar34[0xb] == 0" (subscript_expression "piVar34[0xb]" identifier [ number_literal ]) == number_literal) && (binary_expression "piVar34[10] == 0" (subscript_expression "piVar34[10]" identifier [ number_literal ]) == number_literal)) ))) )) (compound_statement "{\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" { (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" identifier = (pointer_expression "*piVar34" * identifier)) ;) (if_statement "if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" if (parenthesized_expression "(local_a0 != 0)" ( (binary_expression "local_a0 != 0" identifier != number_literal) )) (compound_statement "{\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);" do (compound_statement "{\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                }" { (expression_statement "*(undefined4 *)((int)local_3c + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar11)" * (cast_expression "(undefined4 *)((int)local_3c + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_3c + uVar11)" ( (binary_expression "(int)local_3c + uVar11" (cast_expression "(int)local_3c" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" identifier = (binary_expression "uVar11 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 < 0x1c)" ( (binary_expression "uVar11 < 0x1c" identifier < number_literal) )) ;) (expression_statement "local_28 = '\x01';" (assignment_expression "local_28 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "local_3c[1] = unaff_EDI + -0x6e6f7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x6e6f7" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x6e6f7" identifier + number_literal)) ;) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x82347" identifier + number_literal)) ;) (if_statement "if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;" if (parenthesized_expression "((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))" ( (binary_expression "(iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) && (parenthesized_expression "(FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" ( (comma_expression "FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'" (call_expression "FUN_0002e610()" identifier (argument_list "()" ( ))) , (comma_expression "piVar17 = local_58[1], local_28 == '\0'" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) , (binary_expression "local_28 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')))) ))) )) (goto_statement "goto LAB_000a0030;" goto statement_identifier ;)) (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" identifier = (pointer_expression "*piVar34" * identifier)) ;) })) (expression_statement "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);" (call_expression "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10)" identifier (argument_list "(piVar10,iVar38,local_d0[9],0x10)" ( identifier , identifier , (subscript_expression "local_d0[9]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" * (cast_expression "(ushort *)((int)piVar34 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" * (cast_expression "(ushort *)((int)piVar34 + 10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" identifier = (subscript_expression "local_58[1]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_000a0030:\n            iVar12 = iVar12 + 1;" statement_identifier : (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar12 < piVar17[3])" ( (binary_expression "iVar12 < piVar17[3]" identifier < (subscript_expression "piVar17[3]" identifier [ number_literal ])) )) ;) })) (if_statement "if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" if (parenthesized_expression "((uVar29 & 0x100) != 0)" ( (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" { (if_statement "if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" if (parenthesized_expression "(*piVar30 == 1)" ( (binary_expression "*piVar30 == 1" (pointer_expression "*piVar30" * identifier) == number_literal) )) (compound_statement "{\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" { (expression_statement "iVar12 = piVar30[0xc];" (assignment_expression "iVar12 = piVar30[0xc]" identifier = (subscript_expression "piVar30[0xc]" identifier [ number_literal ])) ;) (if_statement "if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" if (parenthesized_expression "(0 < *param_2)" ( (binary_expression "0 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" { (expression_statement "piVar17 = param_2 + 1;" (assignment_expression "piVar17 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a1290:\n              pcVar21 = (char *)*piVar17;" statement_identifier : (expression_statement "pcVar21 = (char *)*piVar17;" (assignment_expression "pcVar21 = (char *)*piVar17" identifier = (cast_expression "(char *)*piVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;)) (do_statement "do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );" do (compound_statement "{\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              }" { (if_statement "if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" { (labeled_statement "LAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();" statement_identifier : (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" { (if_statement "if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" if (parenthesized_expression "((uVar11 & 0x1000) == 0)" ( (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" ( (binary_expression "uVar11 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" { (if_statement "if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;" if (parenthesized_expression "(((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0))" ( (binary_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)" (parenthesized_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c)))" ( (binary_expression "(*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "(*pcVar21 == -0x62)" ( (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" * identifier) == number_literal) )) && (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" ( (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" identifier == (pointer_expression "*(int *)(pcVar21 + 0x1c)" * (cast_expression "(int *)(pcVar21 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x1c)" ( (binary_expression "pcVar21 + 0x1c" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "(*(int *)(pcVar21 + 0x20) < 0)" ( (binary_expression "*(int *)(pcVar21 + 0x20) < 0" (pointer_expression "*(int *)(pcVar21 + 0x20)" * (cast_expression "(int *)(pcVar21 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x20)" ( (binary_expression "pcVar21 + 0x20" identifier + number_literal) )))) < number_literal) ))) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;)) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "piVar17 = piVar17 + 5;" (assignment_expression "piVar17 = piVar17 + 5" identifier = (binary_expression "piVar17 + 5" identifier + number_literal)) ;) (if_statement "if (iVar38 == *param_2) goto LAB_000a12dd;" if (parenthesized_expression "(iVar38 == *param_2)" ( (binary_expression "iVar38 == *param_2" identifier == (pointer_expression "*param_2" * identifier)) )) (goto_statement "goto LAB_000a12dd;" goto statement_identifier ;)) (goto_statement "goto LAB_000a1290;" goto statement_identifier ;) })) (if_statement "if ((uVar11 & 0x40000) == 0) break;" if (parenthesized_expression "((uVar11 & 0x40000) == 0)" ( (binary_expression "(uVar11 & 0x40000) == 0" (parenthesized_expression "(uVar11 & 0x40000)" ( (binary_expression "uVar11 & 0x40000" identifier & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" * (cast_expression "(int *)(pcVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x14)" ( (binary_expression "pcVar21 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (pcVar21 == (char *)0x0) goto LAB_000144c2;" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000144c2;" goto statement_identifier ;)) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar21 + 0xc)" * (cast_expression "(char **)(pcVar21 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);" statement_identifier : (expression_statement "iVar38 = *(int *)(piVar30[6] + 8);" (assignment_expression "iVar38 = *(int *)(piVar30[6] + 8)" identifier = (pointer_expression "*(int *)(piVar30[6] + 8)" * (cast_expression "(int *)(piVar30[6] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 8)" ( (binary_expression "piVar30[6] + 8" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) ))))) ;)) (if_statement "if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" { (labeled_statement "LAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" statement_identifier : (if_statement "if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" if (parenthesized_expression "(*(char *)(iVar38 + 0x36) == '\0')" ( (binary_expression "*(char *)(iVar38 + 0x36) == '\0'" (pointer_expression "*(char *)(iVar38 + 0x36)" * (cast_expression "(char *)(iVar38 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x36)" ( (binary_expression "iVar38 + 0x36" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a12f0;" goto statement_identifier ;))) (if_statement "if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" if (parenthesized_expression "(*(short *)(iVar38 + 0x32) != 0)" ( (binary_expression "*(short *)(iVar38 + 0x32) != 0" (pointer_expression "*(short *)(iVar38 + 0x32)" * (cast_expression "(short *)(iVar38 + 0x32)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" statement_identifier : (expression_statement "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" (assignment_expression "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" identifier = (call_expression "FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" identifier (argument_list "(0xffffffff,0xffffffff,2,iVar38)" ( number_literal , number_literal , number_literal , identifier )))) ;)) (if_statement "if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" { (expression_statement "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);" (assignment_expression "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" identifier = (pointer_expression "*(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" * (cast_expression "(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar38 + 0x20) + uVar11 * 4)" ( (binary_expression "*(int *)(iVar38 + 0x20) + uVar11 * 4" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) + (binary_expression "uVar11 * 4" identifier * number_literal)) ))))) ;) (if_statement "if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" if (parenthesized_expression "(0 < *param_2)" ( (binary_expression "0 < *param_2" number_literal < (pointer_expression "*param_2" * identifier)) )) (compound_statement "{\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );" do (compound_statement "{\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    }" { (expression_statement "pcVar21 = (char *)param_2[iVar16 * 5 + 1];" (assignment_expression "pcVar21 = (char *)param_2[iVar16 * 5 + 1]" identifier = (cast_expression "(char *)param_2[iVar16 * 5 + 1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[iVar16 * 5 + 1]" identifier [ (binary_expression "iVar16 * 5 + 1" (binary_expression "iVar16 * 5" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" { (labeled_statement "FUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();" statement_identifier : (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) (while_statement "while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" while (parenthesized_expression "((uVar13 & 0x1000) != 0)" ( (binary_expression "(uVar13 & 0x1000) != 0" (parenthesized_expression "(uVar13 & 0x1000)" ( (binary_expression "uVar13 & 0x1000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" { (if_statement "if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" if (parenthesized_expression "((uVar13 & 0x40000) == 0)" ( (binary_expression "(uVar13 & 0x40000) == 0" (parenthesized_expression "(uVar13 & 0x40000)" ( (binary_expression "uVar13 & 0x40000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }" { (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" identifier = (pointer_expression "*(char **)(pcVar21 + 0xc)" * (cast_expression "(char **)(pcVar21 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" else (compound_statement "{\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" { (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" * (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" ( (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" * (cast_expression "(int *)(pcVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x14)" ( (binary_expression "pcVar21 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if (pcVar21 == (char *)0x0) goto FUN_000144b9;" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto FUN_000144b9;" goto statement_identifier ;)) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" identifier = (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" if (parenthesized_expression "(((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c)))" ( (binary_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)))" ( (binary_expression "(*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" (parenthesized_expression "(*pcVar21 == -0x62)" ( (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" * identifier) == number_literal) )) && (parenthesized_expression "(*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" ( (binary_expression "*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (pointer_expression "*(int *)(pcVar21 + 0x20)" * (cast_expression "(int *)(pcVar21 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x20)" ( (binary_expression "pcVar21 + 0x20" identifier + number_literal) )))) == (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" * (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" * (cast_expression "(int *)(iVar38 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 4)" ( (binary_expression "iVar38 + 4" identifier + number_literal) )))) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))))) ))) )) && (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" ( (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" identifier == (pointer_expression "*(int *)(pcVar21 + 0x1c)" * (cast_expression "(int *)(pcVar21 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x1c)" ( (binary_expression "pcVar21 + 0x1c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" { (expression_statement "puVar22 = (undefined4 *)FUN_0005da30();" (assignment_expression "puVar22 = (undefined4 *)FUN_0005da30()" identifier = (cast_expression "(undefined4 *)FUN_0005da30()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005da30()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" if (parenthesized_expression "(puVar22 == (undefined4 *)0x0)" ( (binary_expression "puVar22 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" { (expression_statement "puVar22 = *(undefined4 **)(*piVar10 + 8);" (assignment_expression "puVar22 = *(undefined4 **)(*piVar10 + 8)" identifier = (pointer_expression "*(undefined4 **)(*piVar10 + 8)" * (cast_expression "(undefined4 **)(*piVar10 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar10 + 8)" ( (binary_expression "*piVar10 + 8" (pointer_expression "*piVar10" * identifier) + number_literal) ))))) ;) })) (expression_statement "bVar8 = *(byte *)*puVar22;" (assignment_expression "bVar8 = *(byte *)*puVar22" identifier = (pointer_expression "*(byte *)*puVar22" * (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier)))) ;) (if_statement "if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" if (parenthesized_expression "(*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1))" ( (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)*pbVar1)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)*pbVar1" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) )) (compound_statement "{\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" { (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (while_statement "while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" while (parenthesized_expression "(bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]))" ( (comma_expression "bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (assignment_expression "bVar8 = ((byte *)*puVar22)[iVar14]" identifier = (subscript_expression "((byte *)*puVar22)[iVar14]" (parenthesized_expression "((byte *)*puVar22)" ( (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier)) )) [ identifier ])) , (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) == (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" * (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" ( (binary_expression "unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]" (binary_expression "unaff_EDI + 0x64d89" identifier + number_literal) + (cast_expression "(uint)pbVar1[iVar14]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar1[iVar14]" identifier [ identifier ]))) )))))) )) (compound_statement "{\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" if (parenthesized_expression "(bVar8 == 0)" ( (binary_expression "bVar8 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a14dd;" goto statement_identifier ;)) })) })) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (if_statement "if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" if (parenthesized_expression "(*param_2 <= iVar16)" ( (binary_expression "*param_2 <= iVar16" (pointer_expression "*param_2" * identifier) <= identifier) )) (compound_statement "{\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" { (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a1320;" goto statement_identifier ;) })) (labeled_statement "LAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;" statement_identifier : (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;)) (goto_statement "goto LAB_000a0050;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" statement_identifier : (if_statement "if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" if (parenthesized_expression "(local_b4 == (int *)0x0)" ( (binary_expression "local_b4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" { (expression_statement "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) = (binary_expression "*(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" * (cast_expression "(ushort *)(local_d0 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "local_d0[2] = (int)param_2;" (assignment_expression "local_d0[2] = (int)param_2" (subscript_expression "local_d0[2]" identifier [ number_literal ]) = (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }))) })) (labeled_statement "LAB_000a0050:\n        iVar38 = local_4c;" statement_identifier : (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" identifier = identifier) ;)) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" identifier = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" identifier = (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" identifier [ number_literal ]) [ number_literal ])) ;) (if_statement "if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" if (parenthesized_expression "(((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))))" ( (binary_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" (parenthesized_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0))" ( (binary_expression "(local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" (parenthesized_expression "(local_a0 == 1)" ( (binary_expression "local_a0 == 1" identifier == number_literal) )) && (parenthesized_expression "((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" ( (binary_expression "(*(byte *)(local_58[0] + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(local_58[0] + 0xb) & 0x20)" ( (binary_expression "*(byte *)(local_58[0] + 0xb) & 0x20" (pointer_expression "*(byte *)(local_58[0] + 0xb)" * (cast_expression "(byte *)(local_58[0] + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58[0] + 0xb)" ( (binary_expression "local_58[0] + 0xb" (subscript_expression "local_58[0]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" ( (parenthesized_expression "(iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))" ( (comma_expression "iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x18)" identifier = (pointer_expression "*(int *)(iVar12 + 0x18)" * (cast_expression "(int *)(iVar12 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x18)" ( (binary_expression "iVar12 + 0x18" identifier + number_literal) ))))) , (binary_expression "*(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (binary_expression "*(int *)(iVar16 + 0x38) == 0" (pointer_expression "*(int *)(iVar16 + 0x38)" * (cast_expression "(int *)(iVar16 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x38)" ( (binary_expression "iVar16 + 0x38" identifier + number_literal) )))) == number_literal) && (parenthesized_expression "((*(byte *)(iVar12 + 0x2d) & 2) == 0)" ( (binary_expression "(*(byte *)(iVar12 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar12 + 0x2d) & 2)" ( (binary_expression "*(byte *)(iVar12 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar12 + 0x2d)" * (cast_expression "(byte *)(iVar12 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x2d)" ( (binary_expression "iVar12 + 0x2d" identifier + number_literal) )))) & number_literal) )) == number_literal) )))) )) ))) )) (compound_statement "{\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }" { (expression_statement "iVar14 = *(int *)(iVar12 + 0x30);" (assignment_expression "iVar14 = *(int *)(iVar12 + 0x30)" identifier = (pointer_expression "*(int *)(iVar12 + 0x30)" * (cast_expression "(int *)(iVar12 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x30)" ( (binary_expression "iVar12 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*(undefined2 *)(local_4c + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x2a) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x2a)" * (cast_expression "(undefined2 *)(local_4c + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x2a)" ( (binary_expression "local_4c + 0x2a" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" * (cast_expression "(undefined4 *)(local_4c + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x24)" ( (binary_expression "local_4c + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar28 = FUN_000624e0(0,0,0x82,0);" (assignment_expression "iVar28 = FUN_000624e0(0,0,0x82,0)" identifier = (call_expression "FUN_000624e0(0,0,0x82,0)" identifier (argument_list "(0,0,0x82,0)" ( number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }" { (expression_statement "iVar16 = *(int *)(iVar16 + 8);" (assignment_expression "iVar16 = *(int *)(iVar16 + 8)" identifier = (pointer_expression "*(int *)(iVar16 + 8)" * (cast_expression "(int *)(iVar16 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 8)" ( (binary_expression "iVar16 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" { (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" else (compound_statement "{\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" { (do_statement "do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);" do (compound_statement "{\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              }" { (if_statement "if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" if (parenthesized_expression "(((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4))" ( (binary_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)" (parenthesized_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0))" ( (binary_expression "(*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)" (parenthesized_expression "(*(char *)(iVar16 + 0x36) != '\0')" ( (binary_expression "*(char *)(iVar16 + 0x36) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x36)" * (cast_expression "(char *)(iVar16 + 0x36)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x36)" ( (binary_expression "iVar16 + 0x36" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(int *)(iVar16 + 0x24) == 0)" ( (binary_expression "*(int *)(iVar16 + 0x24) == 0" (pointer_expression "*(int *)(iVar16 + 0x24)" * (cast_expression "(int *)(iVar16 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x24)" ( (binary_expression "iVar16 + 0x24" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) < 4)" ( (binary_expression "*(ushort *)(iVar16 + 0x32) < 4" (pointer_expression "*(ushort *)(iVar16 + 0x32)" * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" { (expression_statement "bVar8 = *(byte *)(iVar16 + 0x37);" (assignment_expression "bVar8 = *(byte *)(iVar16 + 0x37)" identifier = (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) ))))) ;) (if_statement "if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" if (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) == 0)" ( (binary_expression "*(ushort *)(iVar16 + 0x32) == 0" (pointer_expression "*(ushort *)(iVar16 + 0x32)" * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    uVar11 = 0;\n                  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" else (compound_statement "{\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);" do (compound_statement "{\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    }" { (expression_statement "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);" (assignment_expression "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" identifier = (call_expression "FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" identifier (argument_list "(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" ( number_literal , number_literal , (binary_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82" (parenthesized_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80)" ( (binary_expression "-(uint)((bVar8 & 8) == 0) & 0xffffff80" (unary_expression "-(uint)((bVar8 & 8) == 0)" - (call_expression "(uint)((bVar8 & 8) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((bVar8 & 8) == 0)" ( (binary_expression "(bVar8 & 8) == 0" (parenthesized_expression "(bVar8 & 8)" ( (binary_expression "bVar8 & 8" identifier & number_literal) )) == number_literal) )))) & number_literal) )) + number_literal) , identifier )))) ;) (if_statement "if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (compound_statement "{\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" { (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;" (assignment_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28" (pointer_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" * (cast_expression "(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 0x30) + uVar13 * 4)" ( (binary_expression "*(int *)(iVar38 + 0x30) + uVar13 * 4" (pointer_expression "*(int *)(iVar38 + 0x30)" * (cast_expression "(int *)(iVar38 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x30)" ( (binary_expression "iVar38 + 0x30" identifier + number_literal) )))) + (binary_expression "uVar13 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar16 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x32)" ( (binary_expression "iVar16 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)uVar13 < (int)uVar11)" ( (binary_expression "(int)uVar13 < (int)uVar11" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (uVar13 != uVar11) goto LAB_000a1960;" if (parenthesized_expression "(uVar13 != uVar11)" ( (binary_expression "uVar13 != uVar11" identifier != identifier) )) (goto_statement "goto LAB_000a1960;" goto statement_identifier ;)) }))) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1201;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1201" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar9 = (undefined2)uVar11;" (assignment_expression "uVar9 = (undefined2)uVar11" identifier = (cast_expression "(undefined2)uVar11" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (if_statement "if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" if (parenthesized_expression "(((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0))" ( (binary_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0)" ( (binary_expression "(*(byte *)(iVar16 + 0x37) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 0x20)" ( (binary_expression "*(byte *)(iVar16 + 0x37) & 0x20" (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" ( (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40))" ( (binary_expression "*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)" (pointer_expression "*(uint *)(iVar12 + 0x40)" * (cast_expression "(uint *)(iVar12 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x40)" ( (binary_expression "iVar12 + 0x40" identifier + number_literal) )))) & (pointer_expression "*(uint *)(iVar16 + 0x40)" * (cast_expression "(uint *)(iVar16 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x40)" ( (binary_expression "iVar16 + 0x40" identifier + number_literal) ))))) )) != number_literal) || (binary_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c))" ( (binary_expression "*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)" (pointer_expression "*(uint *)(iVar12 + 0x3c)" * (cast_expression "(uint *)(iVar12 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x3c)" ( (binary_expression "iVar12 + 0x3c" identifier + number_literal) )))) & (pointer_expression "*(uint *)(iVar16 + 0x3c)" * (cast_expression "(uint *)(iVar16 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x3c)" ( (binary_expression "iVar16 + 0x3c" identifier + number_literal) ))))) )) != number_literal)) ))) )) (compound_statement "{\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" { (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" else (compound_statement "{\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" { (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1241;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1241" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) }))) (goto_statement "goto LAB_000a1a26;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);" statement_identifier : (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" identifier = (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "((uint)uVar15 >> 0x10)" ( (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;)) (expression_statement "iVar16 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar16 = *(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) ))))) ;) }) while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) ;) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) }) (else_clause "else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" else (compound_statement "{\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" { (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1101;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1101" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" * (cast_expression "(undefined4 *)(iVar38 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(int **)(iVar38 + 0x30) = iVar28;" (assignment_expression "**(int **)(iVar38 + 0x30) = iVar28" (pointer_expression "**(int **)(iVar38 + 0x30)" * (pointer_expression "*(int **)(iVar38 + 0x30)" * (cast_expression "(int **)(iVar38 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar38 + 0x30)" ( (binary_expression "iVar38 + 0x30" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" * (cast_expression "(undefined2 *)(iVar38 + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x28)" ( (binary_expression "iVar38 + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" * (cast_expression "(undefined2 *)(iVar38 + 0x18)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x18)" ( (binary_expression "iVar38 + 0x18" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x21;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x21" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" * (cast_expression "(undefined2 *)(iVar38 + 0x14)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" identifier = (pointer_expression "*(int *)(iVar38 + 0x24)" * (cast_expression "(int *)(iVar38 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" { (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" identifier = (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" identifier [ number_literal ]) [ number_literal ])) ;) (goto_statement "goto LAB_000a0070;" goto statement_identifier ;) })) (labeled_statement "LAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;" statement_identifier : (expression_statement "*(undefined2 *)(iVar38 + 0x16) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x16) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x16)" * (cast_expression "(undefined2 *)(iVar38 + 0x16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x16)" ( (binary_expression "iVar38 + 0x16" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar17[0xc9] = iVar38;" (assignment_expression "piVar17[0xc9] = iVar38" (subscript_expression "piVar17[0xc9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(iVar38 + 8) = 1;" (assignment_expression "*(undefined4 *)(iVar38 + 8) = 1" (pointer_expression "*(undefined4 *)(iVar38 + 8)" * (cast_expression "(undefined4 *)(iVar38 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar38 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar38 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar38 + 0xc)" * (cast_expression "(undefined4 *)(iVar38 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(piVar17 + 0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar17 + 0x12) = 1" (pointer_expression "*(undefined2 *)(piVar17 + 0x12)" * (cast_expression "(undefined2 *)(piVar17 + 0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 0x12)" ( (binary_expression "piVar17 + 0x12" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar17[0xbc] = iVar14;" (assignment_expression "piVar17[0xbc] = iVar14" (subscript_expression "piVar17[0xbc]" identifier [ number_literal ]) = identifier) ;) (if_statement "if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" if (parenthesized_expression "((undefined4 *)piVar17[2] != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)piVar17[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)piVar17[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[2]" identifier [ number_literal ])) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" { (expression_statement "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];" (assignment_expression "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2]" (pointer_expression "*(char *)((int)piVar17 + 0x2f)" * (cast_expression "(char *)((int)piVar17 + 0x2f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x2f)" ( (binary_expression "(int)piVar17 + 0x2f" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)*(undefined4 *)piVar17[2]" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined4 *)piVar17[2]" * (cast_expression "(undefined4 *)piVar17[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar17[2]" identifier [ number_literal ]))))) ;) })) (if_statement "if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" if (parenthesized_expression "((*(byte *)((int)piVar17 + 0x2d) & 1) != 0)" ( (binary_expression "(*(byte *)((int)piVar17 + 0x2d) & 1) != 0" (parenthesized_expression "(*(byte *)((int)piVar17 + 0x2d) & 1)" ( (binary_expression "*(byte *)((int)piVar17 + 0x2d) & 1" (pointer_expression "*(byte *)((int)piVar17 + 0x2d)" * (cast_expression "(byte *)((int)piVar17 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x2d)" ( (binary_expression "(int)piVar17 + 0x2d" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" { (expression_statement "*(undefined1 *)((int)piVar17 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)piVar17 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)piVar17 + 0x33)" * (cast_expression "(undefined1 *)((int)piVar17 + 0x33)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0x33)" ( (binary_expression "(int)piVar17 + 0x33" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) (labeled_statement "LAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" statement_identifier : (if_statement "if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" if (parenthesized_expression "(local_d0[2] == 0)" ( (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" { (labeled_statement "LAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" statement_identifier : (if_statement "if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x10)" ( (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x1d)" * (cast_expression "(byte *)(iVar4 + 0x1d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" { (expression_statement "local_d0[0x10] = -1;" (assignment_expression "local_d0[0x10] = -1" (subscript_expression "local_d0[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_d0[0x11] = -1;" (assignment_expression "local_d0[0x11] = -1" (subscript_expression "local_d0[0x11]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (if_statement "if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" if (parenthesized_expression "((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0'))" ( (binary_expression "(piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')" (parenthesized_expression "(piVar10[9] == 0)" ( (binary_expression "piVar10[9] == 0" (subscript_expression "piVar10[9]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" { (if_statement "if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" if (parenthesized_expression "((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0))" ( (binary_expression "(*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)" (parenthesized_expression "(*(byte *)((int)local_d0 + 0x2e) < 2)" ( (binary_expression "*(byte *)((int)local_d0 + 0x2e) < 2" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) || (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }" { (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) }) (else_clause "else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" else (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" { (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) (if_statement "if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x49) & 1) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x49) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x49) & 1)" ( (binary_expression "*(byte *)(iVar4 + 0x49) & 1" (pointer_expression "*(byte *)(iVar4 + 0x49)" * (cast_expression "(byte *)(iVar4 + 0x49)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x49)" ( (binary_expression "iVar4 + 0x49" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" { (expression_statement "uVar41 = FUN_0003db30();" (assignment_expression "uVar41 = FUN_0003db30()" identifier = (call_expression "FUN_0003db30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" if (parenthesized_expression "(local_58[2] != (int *)0x0)" ( (binary_expression "local_58[2] != (int *)0x0" (subscript_expression "local_58[2]" identifier [ number_literal ]) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" { (expression_statement "uVar42 = FUN_0003db30();" (assignment_expression "uVar42 = FUN_0003db30()" identifier = (call_expression "FUN_0003db30()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar41 = uVar42 | uVar41;" (assignment_expression "uVar41 = uVar42 | uVar41" identifier = (binary_expression "uVar42 | uVar41" identifier | identifier)) ;) })) (expression_statement "local_b4 = (int *)(uVar41 >> 0x20);" (assignment_expression "local_b4 = (int *)(uVar41 >> 0x20)" identifier = (cast_expression "(int *)(uVar41 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar41 >> 0x20)" ( (binary_expression "uVar41 >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "local_bc = (uint)uVar41;" (assignment_expression "local_bc = (uint)uVar41" identifier = (cast_expression "(uint)uVar41" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" identifier = number_literal) ;) (expression_statement "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;" (assignment_expression "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1" identifier = (binary_expression "*(byte *)((int)local_d0 + 0x2e) - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (if_statement "if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" { (do_statement "do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);" do (compound_statement "{\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  }" { (expression_statement "iVar38 = local_d0[iVar12 * 0x11 + 0xc9];" (assignment_expression "iVar38 = local_d0[iVar12 * 0x11 + 0xc9]" identifier = (subscript_expression "local_d0[iVar12 * 0x11 + 0xc9]" identifier [ (binary_expression "iVar12 * 0x11 + 0xc9" (binary_expression "iVar12 * 0x11" identifier * number_literal) + number_literal) ])) ;) (if_statement "if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" if (parenthesized_expression "(((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))))" ( (binary_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" (parenthesized_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0)" ( (binary_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0" (parenthesized_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)" ( (binary_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8" (pointer_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" * (cast_expression "(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" ( (binary_expression "local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "local_d0[1] + 0x2c" (subscript_expression "local_d0[1]" identifier [ number_literal ]) + number_literal) + (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar38 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) * number_literal)) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" ( (parenthesized_expression "((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))" ( (binary_expression "(uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" ( (binary_expression "uVar29 & 0x100" identifier & number_literal) )) != number_literal) || (parenthesized_expression "((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" ( (binary_expression "(*(byte *)(iVar38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar38 + 0x25) & 0x10)" ( (binary_expression "*(byte *)(iVar38 + 0x25) & 0x10" (pointer_expression "*(byte *)(iVar38 + 0x25)" * (cast_expression "(byte *)(iVar38 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x25)" ( (binary_expression "iVar38 + 0x25" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) ))) )) (compound_statement "{\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" { (expression_statement "uVar11 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar11 = *(uint *)(iVar38 + 8)" identifier = (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" if (parenthesized_expression "(((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0)" ( (binary_expression "((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0" (binary_expression "((uint)local_b4 & uVar13) == 0" (parenthesized_expression "((uint)local_b4 & uVar13)" ( (binary_expression "(uint)local_b4 & uVar13" (cast_expression "(uint)local_b4" ( (type_descriptor "uint" type_identifier) ) identifier) & identifier) )) == number_literal) && (binary_expression "(local_bc & uVar11) == 0" (parenthesized_expression "(local_bc & uVar11)" ( (binary_expression "local_bc & uVar11" identifier & identifier) )) == number_literal)) )) (compound_statement "{\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" { (expression_statement "piVar17 = (int *)local_58[1][5];" (assignment_expression "piVar17 = (int *)local_58[1][5]" identifier = (cast_expression "(int *)local_58[1][5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_58[1][5]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ]))) ;) (expression_statement "piVar34 = piVar17 + local_58[1][3] * 0xc;" (assignment_expression "piVar34 = piVar17 + local_58[1][3] * 0xc" identifier = (binary_expression "piVar17 + local_58[1][3] * 0xc" identifier + (binary_expression "local_58[1][3] * 0xc" (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" identifier [ number_literal ]) [ number_literal ]) * number_literal))) ;) (if_statement "if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" if (parenthesized_expression "(piVar17 < piVar34)" ( (binary_expression "piVar17 < piVar34" identifier < identifier) )) (compound_statement "{\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" { (expression_statement "piVar23 = piVar17;" (assignment_expression "piVar23 = piVar17" identifier = identifier) ;) (do_statement "do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);" do (compound_statement "{\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          }" { (expression_statement "uVar25 = uVar11;" (assignment_expression "uVar25 = uVar11" identifier = identifier) ;) (expression_statement "uVar43 = uVar13;" (assignment_expression "uVar43 = uVar13" identifier = identifier) ;) (if_statement "if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" if (parenthesized_expression "(((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))))" ( (binary_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" (parenthesized_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0)" ( (binary_expression "(piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0" (binary_expression "(piVar23[0xb] & uVar13) != 0" (parenthesized_expression "(piVar23[0xb] & uVar13)" ( (binary_expression "piVar23[0xb] & uVar13" (subscript_expression "piVar23[0xb]" identifier [ number_literal ]) & identifier) )) != number_literal) || (binary_expression "(piVar23[10] & uVar11) != 0" (parenthesized_expression "(piVar23[10] & uVar11)" ( (binary_expression "piVar23[10] & uVar11" (subscript_expression "piVar23[10]" identifier [ number_literal ]) & identifier) )) != number_literal)) )) && (parenthesized_expression "(((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" ( (parenthesized_expression "((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))" ( (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar23 + 4) & 1)" ( (binary_expression "*(byte *)(*piVar23 + 4) & 1" (pointer_expression "*(byte *)(*piVar23 + 4)" * (cast_expression "(byte *)(*piVar23 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + 4)" ( (binary_expression "*piVar23 + 4" (pointer_expression "*piVar23" * identifier) + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" ( (binary_expression "(int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (cast_expression "(int)*(short *)(*piVar23 + 0x26)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*piVar23 + 0x26)" * (cast_expression "(short *)(*piVar23 + 0x26)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + 0x26)" ( (binary_expression "*piVar23 + 0x26" (pointer_expression "*piVar23" * identifier) + number_literal) ))))) != (pointer_expression "*(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" * (cast_expression "(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" ( (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30" (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (subscript_expression "local_d0[1]" identifier [ number_literal ]) + (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar38 + 0x10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) * number_literal)) + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" { (if_statement "if (piVar23 < piVar34) goto LAB_000a17a8;" if (parenthesized_expression "(piVar23 < piVar34)" ( (binary_expression "piVar23 < piVar34" identifier < identifier) )) (goto_statement "goto LAB_000a17a8;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "piVar23 = piVar23 + 0xc;" (assignment_expression "piVar23 = piVar23 + 0xc" identifier = (binary_expression "piVar23 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar23 < piVar34)" ( (binary_expression "piVar23 < piVar34" identifier < identifier) )) ;) (while_statement "while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" { (if_statement "if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" if (parenthesized_expression "((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0)" ( (binary_expression "(uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0" (binary_expression "(uVar43 & piVar17[0xb]) != 0" (parenthesized_expression "(uVar43 & piVar17[0xb])" ( (binary_expression "uVar43 & piVar17[0xb]" identifier & (subscript_expression "piVar17[0xb]" identifier [ number_literal ])) )) != number_literal) || (binary_expression "(uVar25 & piVar17[10]) != 0" (parenthesized_expression "(uVar25 & piVar17[10])" ( (binary_expression "uVar25 & piVar17[10]" identifier & (subscript_expression "piVar17[10]" identifier [ number_literal ])) )) != number_literal)) )) (compound_statement "{\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" { (expression_statement "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;" (assignment_expression "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" * (cast_expression "(ushort *)((int)piVar17 + 10U)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 10U)" ( (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "*(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" * (cast_expression "(ushort *)((int)piVar17 + 10U)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 10U)" ( (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) | number_literal)) ;) })) (expression_statement "piVar17 = piVar17 + 0xc;" (assignment_expression "piVar17 = piVar17 + 0xc" identifier = (binary_expression "piVar17 + 0xc" identifier + number_literal)) ;) (if_statement "if (piVar34 <= piVar17) break;" if (parenthesized_expression "(piVar34 <= piVar17)" ( (binary_expression "piVar34 <= piVar17" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar25 = *(uint *)(iVar38 + 8)" identifier = (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar43 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar43 = *(uint *)(iVar38 + 0xc)" identifier = (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) ))))) ;) })) })) (expression_statement "local_c8 = ~uVar13 & local_c8;" (assignment_expression "local_c8 = ~uVar13 & local_c8" identifier = (binary_expression "~uVar13 & local_c8" (unary_expression "~uVar13" ~ identifier) & identifier)) ;) (expression_statement "local_cc = ~uVar11 & local_cc;" (assignment_expression "local_cc = ~uVar11 & local_cc" identifier = (binary_expression "~uVar11 & local_cc" (unary_expression "~uVar11" ~ identifier) & identifier)) ;) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" identifier = (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" if (parenthesized_expression "(bVar8 - 1 != iVar12)" ( (binary_expression "bVar8 - 1 != iVar12" (binary_expression "bVar8 - 1" identifier - number_literal) != identifier) )) (compound_statement "{\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" { (expression_statement "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);" (call_expression "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" identifier (argument_list "(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" ( (binary_expression "local_b8 + iVar12 * 0x11" identifier + (binary_expression "iVar12 * 0x11" identifier * number_literal)) , (binary_expression "local_d0 + iVar12 * 0x11 + 0xcc" (binary_expression "local_d0 + iVar12 * 0x11" identifier + (binary_expression "iVar12 * 0x11" identifier * number_literal)) + number_literal) , (binary_expression "((bVar8 - 1) - iVar12) * 0x44" (parenthesized_expression "((bVar8 - 1) - iVar12)" ( (binary_expression "(bVar8 - 1) - iVar12" (parenthesized_expression "(bVar8 - 1)" ( (binary_expression "bVar8 - 1" identifier - number_literal) )) - identifier) )) * number_literal) ))) ;) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" identifier = (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (expression_statement "local_a0 = local_a0 + -1;" (assignment_expression "local_a0 = local_a0 + -1" identifier = (binary_expression "local_a0 + -1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;" (assignment_expression "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" * (cast_expression "(byte *)((int)local_d0 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x2e)" ( (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (binary_expression "bVar8 - 1" identifier - number_literal)) ;) })) })) (labeled_statement "LAB_000a17a8:\n                    iVar12 = iVar12 + -1;" statement_identifier : (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" identifier = (binary_expression "iVar12 + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) ;) })) })) }))) (expression_statement "uVar40 = CONCAT44(local_c8,local_cc);" (assignment_expression "uVar40 = CONCAT44(local_c8,local_cc)" identifier = (call_expression "CONCAT44(local_c8,local_cc)" identifier (argument_list "(local_c8,local_cc)" ( identifier , identifier )))) ;) (expression_statement "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];" (assignment_expression "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" * (cast_expression "(int *)(*local_d0 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_d0 + 0x80)" ( (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" * identifier) + number_literal) )))) = (binary_expression "*(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" * (cast_expression "(int *)(*local_d0 + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*local_d0 + 0x80)" ( (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" * identifier) + number_literal) )))) + (cast_expression "(int)(short)local_d0[0x12]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(short)local_d0[0x12]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_d0[0x12]" identifier [ number_literal ]))))) ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" if (parenthesized_expression "((uVar29 & 4) != 0)" ( (binary_expression "(uVar29 & 4) != 0" (parenthesized_expression "(uVar29 & 4)" ( (binary_expression "uVar29 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" { (expression_statement "uVar11 = *(uint *)(local_d0[0xc9] + 0x24);" (assignment_expression "uVar11 = *(uint *)(local_d0[0xc9] + 0x24)" identifier = (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" * (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0xc9] + 0x24)" ( (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" identifier [ number_literal ]) + number_literal) ))))) ;) (if_statement "if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }" if (parenthesized_expression "((uVar11 & 0x1000) == 0)" ( (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" ( (binary_expression "uVar11 & 0x1000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }" { (if_statement "if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;" if (parenthesized_expression "((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))))" ( (binary_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" (parenthesized_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0))" ( (binary_expression "((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)" (parenthesized_expression "((uVar29 & 8) == 0)" ( (binary_expression "(uVar29 & 8) == 0" (parenthesized_expression "(uVar29 & 8)" ( (binary_expression "uVar29 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(int *)(piVar30[6] + 0x38) != 0)" ( (binary_expression "*(int *)(piVar30[6] + 0x38) != 0" (pointer_expression "*(int *)(piVar30[6] + 0x38)" * (cast_expression "(int *)(piVar30[6] + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 0x38)" ( (binary_expression "piVar30[6] + 0x38" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" ( (parenthesized_expression "((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))" ( (binary_expression "(uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)" (binary_expression "(uVar11 & 0x2000) != 0" (parenthesized_expression "(uVar11 & 0x2000)" ( (binary_expression "uVar11 & 0x2000" identifier & number_literal) )) != number_literal) && (parenthesized_expression "((uVar29 & 0x10) == 0)" ( (binary_expression "(uVar29 & 0x10) == 0" (parenthesized_expression "(uVar29 & 0x10)" ( (binary_expression "uVar29 & 0x10" identifier & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_000a02e0;" goto statement_identifier ;)) (expression_statement "uVar24 = 2;" (assignment_expression "uVar24 = 2" identifier = number_literal) ;) }) (else_clause "else {\n                uVar24 = 1;\n              }" else (compound_statement "{\n                uVar24 = 1;\n              }" { (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" identifier = number_literal) ;) }))) (expression_statement "*(undefined1 *)((int)local_d0 + 0x31) = uVar24;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x31) = uVar24" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x31)" * (cast_expression "(undefined1 *)((int)local_d0 + 0x31)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" if (parenthesized_expression "(((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0))" ( (binary_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)" (parenthesized_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0)" ( (binary_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20)" ( (binary_expression "*(byte *)(piVar30[6] + 0x24) & 0x20" (pointer_expression "*(byte *)(piVar30[6] + 0x24)" * (cast_expression "(byte *)(piVar30[6] + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[6] + 0x24)" ( (binary_expression "piVar30[6] + 0x24" (subscript_expression "piVar30[6]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "((uVar11 & 0x40) != 0)" ( (binary_expression "(uVar11 & 0x40) != 0" (parenthesized_expression "(uVar11 & 0x40)" ( (binary_expression "uVar11 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" { (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }" if (parenthesized_expression "((uVar29 & 8) != 0)" ( (binary_expression "(uVar29 & 8) != 0" (parenthesized_expression "(uVar29 & 8)" ( (binary_expression "uVar29 & 8" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  bVar8 = 8;\n                }" { (expression_statement "bVar8 = 8;" (assignment_expression "bVar8 = 8" identifier = number_literal) ;) })) (expression_statement "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;" (assignment_expression "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf" (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" * (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0xc9] + 0x24)" ( (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "uVar11 & 0xffffffbf" identifier & number_literal)) ;) })) })) (labeled_statement "LAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" statement_identifier : (if_statement "if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" if (parenthesized_expression "(local_a0 < 1)" ( (binary_expression "local_a0 < 1" identifier < number_literal) )) (compound_statement "{\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }" { (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;)) }) (else_clause "else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" else (compound_statement "{\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" { (expression_statement "piVar17 = local_b8;" (assignment_expression "piVar17 = local_b8" identifier = identifier) ;) (do_statement "do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);" do (compound_statement "{\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              }" { (expression_statement "uVar11 = (uint)*(byte *)(piVar17 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(piVar17 + 9)" identifier = (binary_expression "(uint)*(byte *)(piVar17 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(piVar17 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17 + 9)" ( (binary_expression "piVar17 + 9" identifier + number_literal) ))))) ;) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" identifier = (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }" if (parenthesized_expression "(puVar22[0x12] == 0)" ( (binary_expression "puVar22[0x12] == 0" (subscript_expression "puVar22[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                  iVar12 = -1000000;\n                }" { (expression_statement "iVar12 = -1000000;" (assignment_expression "iVar12 = -1000000" identifier = number_literal) ;) }) (else_clause "else {\n                  iVar12 = FUN_000304d0();\n                }" else (compound_statement "{\n                  iVar12 = FUN_000304d0();\n                }" { (expression_statement "iVar12 = FUN_000304d0();" (assignment_expression "iVar12 = FUN_000304d0()" identifier = (call_expression "FUN_000304d0()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar38 = piVar17[0xe];" (assignment_expression "iVar38 = piVar17[0xe]" identifier = (subscript_expression "piVar17[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" if (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0))" ( (binary_expression "((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 2) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 2)" ( (binary_expression "*(byte *)(puVar22 + 9) & 2" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(puVar22[3] == 0)" ( (binary_expression "puVar22[3] == 0" (subscript_expression "puVar22[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" { (if_statement "if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" if (parenthesized_expression "((uVar13 & 0x400) == 0)" ( (binary_expression "(uVar13 & 0x400) == 0" (parenthesized_expression "(uVar13 & 0x400)" ( (binary_expression "uVar13 & 0x400" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }" { (if_statement "if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" if (parenthesized_expression "(puVar22[0xe] == 0)" ( (binary_expression "puVar22[0xe] == 0" (subscript_expression "puVar22[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" { (if_statement "if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" if (parenthesized_expression "(((uVar13 & 0x40) == 0) && (uVar6 == 0))" ( (binary_expression "((uVar13 & 0x40) == 0) && (uVar6 == 0)" (parenthesized_expression "((uVar13 & 0x40) == 0)" ( (binary_expression "(uVar13 & 0x40) == 0" (parenthesized_expression "(uVar13 & 0x40)" ( (binary_expression "uVar13 & 0x40" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" { (expression_statement "uVar15 = 0x6d;" (assignment_expression "uVar15 = 0x6d" identifier = number_literal) ;) (if_statement "if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" if (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) != '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) != '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" { (expression_statement "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc]" (subscript_expression "local_d0[6]" identifier [ number_literal ]) = (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" identifier [ (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar15 = 0x6e;" (assignment_expression "uVar15 = 0x6e" identifier = number_literal) ;) })) (expression_statement "FUN_0005c7e0(puVar22,uVar15);" (call_expression "FUN_0005c7e0(puVar22,uVar15)" identifier (argument_list "(puVar22,uVar15)" ( identifier , identifier ))) ;) (if_statement "if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" if (parenthesized_expression "(((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0))" ( (binary_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)" (parenthesized_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40))" ( (binary_expression "(*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)" (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) < 0x40)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) < 0x40" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) ))) )) && (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" ( (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" { (expression_statement "uVar13 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar13 = piVar30[uVar11 * 0x11 + 0xf]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" identifier [ (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];" (assignment_expression "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1]" identifier = (subscript_expression "(piVar30 + uVar11 * 0x11 + 0xf)[1]" (parenthesized_expression "(piVar30 + uVar11 * 0x11 + 0xf)" ( (binary_expression "piVar30 + uVar11 * 0x11 + 0xf" (binary_expression "piVar30 + uVar11 * 0x11" identifier + (binary_expression "uVar11 * 0x11" identifier * number_literal)) + number_literal) )) [ number_literal ])) ;) (if_statement "if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" if (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" ( (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" identifier != number_literal) || (binary_expression "uVar13 != 0" identifier != number_literal)) )) (compound_statement "{\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" { (do_statement "do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);" do (compound_statement "{\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            }" { (expression_statement "uVar13 = uVar13 >> 1 | uVar25 << 0x1f;" (assignment_expression "uVar13 = uVar13 >> 1 | uVar25 << 0x1f" identifier = (binary_expression "uVar13 >> 1 | uVar25 << 0x1f" (binary_expression "uVar13 >> 1" identifier >> number_literal) | (binary_expression "uVar25 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar25 = uVar25 >> 1;" (assignment_expression "uVar25 = uVar25 >> 1" identifier = (binary_expression "uVar25 >> 1" identifier >> number_literal)) ;) }) while (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" ( (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" identifier != number_literal) || (binary_expression "uVar13 != 0" identifier != number_literal)) )) ;) })) (expression_statement "FUN_000370b0(0xfffffffd);" (call_expression "FUN_000370b0(0xfffffffd)" identifier (argument_list "(0xfffffffd)" ( number_literal ))) ;) })) (if_statement "if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" if (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" ( (binary_expression "0 < *(int *)(iVar3 + 0x68)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) )) (compound_statement "{\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" { (expression_statement "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;" (assignment_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8" (pointer_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" * (cast_expression "(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" ( (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100)" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) )))) * number_literal) + (pointer_expression "*(int *)(iVar3 + 100)" * (cast_expression "(int *)(iVar3 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 100)" ( (binary_expression "iVar3 + 100" identifier + number_literal) ))))) + number_literal) )))) = (cast_expression "(ushort)bVar8" ( (type_descriptor "ushort" type_identifier) ) identifier)) ;) })) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }) (else_clause "else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" else (compound_statement "{\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" { (expression_statement "FUN_00049420(0,*puVar22);" (call_expression "FUN_00049420(0,*puVar22)" identifier (argument_list "(0,*puVar22)" ( number_literal , (pointer_expression "*puVar22" * identifier) ))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) })) }) (else_clause "else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" else (compound_statement "{\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" { (for_statement "for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }" for ( (assignment_expression "piVar34 = (int *)puVar22[0x10]" identifier = (cast_expression "(int *)puVar22[0x10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar22[0x10]" identifier [ number_literal ]))) ; (parenthesized_expression "(piVar34 != (int *)0x0 && (iVar4 != *piVar34))" ( (binary_expression "piVar34 != (int *)0x0 && (iVar4 != *piVar34)" (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 != *piVar34)" ( (binary_expression "iVar4 != *piVar34" identifier != (pointer_expression "*piVar34" * identifier)) ))) )) ; (assignment_expression "piVar34 = (int *)piVar34[6]" identifier = (cast_expression "(int *)piVar34[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar34[6]" identifier [ number_literal ]))) ) (compound_statement "{\n                    }" { })) (expression_statement "FUN_000497a0(0,0);" (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))) ;) (expression_statement "FUN_000370b0(0xfffffff4);" (call_expression "FUN_000370b0(0xfffffff4)" identifier (argument_list "(0xfffffff4)" ( number_literal ))) ;) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" identifier = (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) ))))) ;) }))) })) (if_statement "if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" if (parenthesized_expression "((uVar13 & 0x200) != 0)" ( (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" ( (binary_expression "uVar13 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" { (expression_statement "iVar16 = *(int *)(iVar38 + 0x20);" (assignment_expression "iVar16 = *(int *)(iVar38 + 0x20)" identifier = (pointer_expression "*(int *)(iVar38 + 0x20)" * (cast_expression "(int *)(iVar38 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x20)" ( (binary_expression "iVar38 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }" if (parenthesized_expression "((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0))" ( (binary_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)" (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2))" ( (binary_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" ( (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" * (cast_expression "(byte *)(puVar22 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + 9)" ( (binary_expression "puVar22 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 3) != 2)" ( (binary_expression "(*(byte *)(iVar16 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 3)" ( (binary_expression "*(byte *)(iVar16 + 0x37) & 3" (pointer_expression "*(byte *)(iVar16 + 0x37)" * (cast_expression "(byte *)(iVar16 + 0x37)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x37)" ( (binary_expression "iVar16 + 0x37" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }" { (if_statement "if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" if (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" ( (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" * (cast_expression "(char *)((int)local_d0 + 0x31)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x31)" ( (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }" { (if_statement "if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }" if (parenthesized_expression "((uVar6 == 0) || (param_4 == 0))" ( (binary_expression "(uVar6 == 0) || (param_4 == 0)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) ))) )) (compound_statement "{\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }" { (expression_statement "iVar14 = piVar10[10];" (assignment_expression "iVar14 = piVar10[10]" identifier = (subscript_expression "piVar10[10]" identifier [ number_literal ])) ;) (expression_statement "piVar10[10] = iVar14 + 1;" (assignment_expression "piVar10[10] = iVar14 + 1" (subscript_expression "piVar10[10]" identifier [ number_literal ]) = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "piVar17[2] = iVar14;" (assignment_expression "piVar17[2] = iVar14" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                        piVar17[2] = param_4;\n                      }" else (compound_statement "{\n                        piVar17[2] = param_4;\n                      }" { (expression_statement "piVar17[2] = param_4;" (assignment_expression "piVar17[2] = param_4" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" else (compound_statement "{\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" { (expression_statement "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);" (assignment_expression "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" identifier = (pointer_expression "*(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" * (cast_expression "(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar30[uVar11 * 0x11 + 6] + 8)" ( (binary_expression "piVar30[uVar11 * 0x11 + 6] + 8" (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) + number_literal) ))))) ;) (expression_statement "iVar28 = param_4;" (assignment_expression "iVar28 = param_4" identifier = identifier) ;) (if_statement "if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" if (parenthesized_expression "((iVar16 != iVar14) && (iVar14 != 0))" ( (binary_expression "(iVar16 != iVar14) && (iVar14 != 0)" (parenthesized_expression "(iVar16 != iVar14)" ( (binary_expression "iVar16 != iVar14" identifier != identifier) )) && (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) ))) )) (compound_statement "{\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" { (do_statement "do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);" do (compound_statement "{\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        }" { (expression_statement "iVar14 = *(int *)(iVar14 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x14)" identifier = (pointer_expression "*(int *)(iVar14 + 0x14)" * (cast_expression "(int *)(iVar14 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x14)" ( (binary_expression "iVar14 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(iVar16 != iVar14)" ( (binary_expression "iVar16 != iVar14" identifier != identifier) )) ;) })) (expression_statement "local_d0[7] = iVar28;" (assignment_expression "local_d0[7] = iVar28" (subscript_expression "local_d0[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar17[2] = iVar28;" (assignment_expression "piVar17[2] = iVar28" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);" (call_expression "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12)" identifier (argument_list "(*(undefined4 *)(iVar16 + 0x2c),iVar12)" ( (pointer_expression "*(undefined4 *)(iVar16 + 0x2c)" * (cast_expression "(undefined4 *)(iVar16 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2c)" ( (binary_expression "iVar16 + 0x2c" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" if (parenthesized_expression "(((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       )" ( (binary_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" (parenthesized_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0))" ( (binary_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)" (parenthesized_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0))" ( (binary_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0)" ( (binary_expression "(*(uint *)(iVar38 + 0x24) & 0xf) != 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0xf)" ( (binary_expression "*(uint *)(iVar38 + 0x24) & 0xf" (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" ( (binary_expression "(*(uint *)(iVar38 + 0x24) & 0x8002) == 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0x8002)" ( (binary_expression "*(uint *)(iVar38 + 0x24) & 0x8002" (pointer_expression "*(uint *)(iVar38 + 0x24)" * (cast_expression "(uint *)(iVar38 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x24)" ( (binary_expression "iVar38 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(byte *)(local_d0 + 0xb) & 1) == 0)" ( (binary_expression "(*(byte *)(local_d0 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(local_d0 + 0xb) & 1)" ( (binary_expression "*(byte *)(local_d0 + 0xb) & 1" (pointer_expression "*(byte *)(local_d0 + 0xb)" * (cast_expression "(byte *)(local_d0 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0 + 0xb)" ( (binary_expression "local_d0 + 0xb" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" ( (parenthesized_expression "(*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68)))" ( (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))" (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02'" (pointer_expression "*(char *)((int)local_d0 + 0x33)" * (cast_expression "(char *)((int)local_d0 + 0x33)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_d0 + 0x33)" ( (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) && (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" ( (binary_expression "0 < *(int *)(iVar3 + 0x68)" number_literal < (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" { (expression_statement "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;" (assignment_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2" (pointer_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" ( (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12" (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 100)" * (cast_expression "(int *)(iVar3 + 100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 100)" ( (binary_expression "iVar3 + 100" identifier + number_literal) )))) + (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) )))) * number_literal)) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n                    piVar17[2] = piVar17[1];\n                  }" else (compound_statement "{\n                    piVar17[2] = piVar17[1];\n                  }" { (expression_statement "piVar17[2] = piVar17[1];" (assignment_expression "piVar17[2] = piVar17[1]" (subscript_expression "piVar17[2]" identifier [ number_literal ]) = (subscript_expression "piVar17[1]" identifier [ number_literal ])) ;) }))) })) (if_statement "if (-1 < iVar12) {\n                  FUN_000893e0();\n                }" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (compound_statement "{\n                  FUN_000893e0();\n                }" { (expression_statement "FUN_000893e0();" (call_expression "FUN_000893e0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" identifier = (binary_expression "piVar17 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar17 != local_d0 + local_a0 * 0x11 + 0xbb)" ( (binary_expression "piVar17 != local_d0 + local_a0 * 0x11 + 0xbb" identifier != (binary_expression "local_d0 + local_a0 * 0x11 + 0xbb" (binary_expression "local_d0 + local_a0 * 0x11" identifier + (binary_expression "local_a0 * 0x11" identifier * number_literal)) + number_literal)) )) ;) (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" { (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" identifier = number_literal) ;) (do_statement "do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);" do (compound_statement "{\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                }" { (if_statement "if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" if (parenthesized_expression "((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0)" ( (binary_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40)" ( (binary_expression "*(byte *)(local_b8[0xe] + 0x25) & 0x40" (pointer_expression "*(byte *)(local_b8[0xe] + 0x25)" * (cast_expression "(byte *)(local_b8[0xe] + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8[0xe] + 0x25)" ( (binary_expression "local_b8[0xe] + 0x25" (subscript_expression "local_b8[0xe]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" { (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" identifier = (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8 + 9)" ( (binary_expression "local_b8 + 9" identifier + number_literal) ))))) ;) (expression_statement "piVar17 = (int *)piVar10[2];" (assignment_expression "piVar17 = (int *)piVar10[2]" identifier = (cast_expression "(int *)piVar10[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[2]" identifier [ number_literal ]))) ;) (expression_statement "iVar12 = FUN_000497a0(0,0);" (assignment_expression "iVar12 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" identifier = (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar30[uVar11 * 0x11 + 6]" identifier [ (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (expression_statement "piVar34 = (int *)local_d0[0x18];" (assignment_expression "piVar34 = (int *)local_d0[0x18]" identifier = (cast_expression "(int *)local_d0[0x18]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_d0[0x18]" identifier [ number_literal ]))) ;) (expression_statement "piVar23 = (int *)local_b8[0xe];" (assignment_expression "piVar23 = (int *)local_b8[0xe]" identifier = (cast_expression "(int *)local_b8[0xe]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_b8[0xe]" identifier [ number_literal ]))) ;) (expression_statement "piVar32 = piVar34 + local_d0[0x16] * 0xc;" (assignment_expression "piVar32 = piVar34 + local_d0[0x16] * 0xc" identifier = (binary_expression "piVar34 + local_d0[0x16] * 0xc" identifier + (binary_expression "local_d0[0x16] * 0xc" (subscript_expression "local_d0[0x16]" identifier [ number_literal ]) * number_literal))) ;) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" identifier = number_literal) ;) (if_statement "if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" if (parenthesized_expression "(piVar34 < piVar32)" ( (binary_expression "piVar34 < piVar32" identifier < identifier) )) (compound_statement "{\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }" { (expression_statement "bVar39 = false;" (assignment_expression "bVar39 = false" identifier = false) ;) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) (do_statement "do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);" do (compound_statement "{\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      }" { (while_statement "while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" { (if_statement "if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" if (parenthesized_expression "(((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0))" ( (binary_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)" (parenthesized_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0))" ( (binary_expression "(piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)" (parenthesized_expression "(piVar23[1] == 0 && *piVar23 == 0)" ( (binary_expression "piVar23[1] == 0 && *piVar23 == 0" (binary_expression "piVar23[1] == 0" (subscript_expression "piVar23[1]" identifier [ number_literal ]) == number_literal) && (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal)) )) && (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" ( (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" ( (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" * (cast_expression "(byte *)((int)piVar34 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar34 + 10)" ( (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((*(byte *)(*piVar34 + 4) & 1) == 0)" ( (binary_expression "(*(byte *)(*piVar34 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar34 + 4) & 1)" ( (binary_expression "*(byte *)(*piVar34 + 4) & 1" (pointer_expression "*(byte *)(*piVar34 + 4)" * (cast_expression "(byte *)(*piVar34 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar34 + 4)" ( (binary_expression "*piVar34 + 4" (pointer_expression "*piVar34" * identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" { (expression_statement "local_28 = '\x03';" (assignment_expression "local_28 = '\x03'" identifier = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "local_3c[1] = unaff_EDI + -0x70cb7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x70cb7" (subscript_expression "local_3c[1]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x70cb7" identifier + number_literal)) ;) (expression_statement "local_24 = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_24 = piVar30[uVar11 * 0x11 + 0xc]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" identifier [ (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" identifier [ number_literal ]) = (binary_expression "unaff_EDI + -0x82347" identifier + number_literal)) ;) (expression_statement "FUN_0002e610(*piVar34);" (call_expression "FUN_0002e610(*piVar34)" identifier (argument_list "(*piVar34)" ( (pointer_expression "*piVar34" * identifier) ))) ;) (if_statement "if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" if (parenthesized_expression "(local_28 != '\0')" ( (binary_expression "local_28 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" { (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" identifier (argument_list "(0)" ( number_literal ))) ;) (expression_statement "local_74 = FUN_0003a550();" (assignment_expression "local_74 = FUN_0003a550()" identifier = (call_expression "FUN_0003a550()" identifier (argument_list "()" ( )))) ;) })) })) (expression_statement "iVar38 = FUN_00030fa0(uVar40);" (assignment_expression "iVar38 = FUN_00030fa0(uVar40)" identifier = (call_expression "FUN_00030fa0(uVar40)" identifier (argument_list "(uVar40)" ( identifier )))) ;) (if_statement "if (iVar38 != 0) break;" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;" statement_identifier : (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" identifier = (binary_expression "piVar34 + 0xc" identifier + number_literal)) ;)) (if_statement "if (piVar32 <= piVar34) goto LAB_000a0663;" if (parenthesized_expression "(piVar32 <= piVar34)" ( (binary_expression "piVar32 <= piVar34" identifier <= identifier) )) (goto_statement "goto LAB_000a0663;" goto statement_identifier ;)) })) (expression_statement "uVar13 = piVar34[7];" (assignment_expression "uVar13 = piVar34[7]" identifier = (subscript_expression "piVar34[7]" identifier [ number_literal ])) ;) (expression_statement "local_d8 = 0x80000000;" (assignment_expression "local_d8 = 0x80000000" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (if_statement "if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" if (parenthesized_expression "((int)uVar13 < 0x40)" ( (binary_expression "(int)uVar13 < 0x40" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" { (expression_statement "bVar8 = (byte)uVar13 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar13 & 0x1f" identifier = (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar31 = 1 << ((byte)uVar13 & 0x1f);" (assignment_expression "uVar31 = 1 << ((byte)uVar13 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar13 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar13 & 0x1f)" ( (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar43 = uVar31;" (assignment_expression "uVar43 = uVar31" identifier = identifier) ;) (expression_statement "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8" identifier = (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar8" number_literal >> (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" if (parenthesized_expression "((uVar13 & 0x20) != 0)" ( (binary_expression "(uVar13 & 0x20) != 0" (parenthesized_expression "(uVar13 & 0x20)" ( (binary_expression "uVar13 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" { (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = uVar31;" (assignment_expression "local_d8 = uVar31" identifier = identifier) ;) })) })) (if_statement "if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" if (parenthesized_expression "(!bVar39)" ( (unary_expression "!bVar39" ! identifier) )) (compound_statement "{\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" { (expression_statement "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));" (call_expression "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" identifier (argument_list "(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" ( number_literal , (binary_expression "unaff_EDI + 0x59c3e" identifier + number_literal) , (pointer_expression "*puVar22" * identifier) , (pointer_expression "*(undefined4 *)(uVar13 * 0x10 + puVar22[1])" * (cast_expression "(undefined4 *)(uVar13 * 0x10 + puVar22[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 * 0x10 + puVar22[1])" ( (binary_expression "uVar13 * 0x10 + puVar22[1]" (binary_expression "uVar13 * 0x10" identifier * number_literal) + (subscript_expression "puVar22[1]" identifier [ number_literal ])) )))) ))) ;) })) (if_statement "if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" if (parenthesized_expression "((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0)" ( (binary_expression "(local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0" (binary_expression "(local_a8 & local_d8) == 0" (parenthesized_expression "(local_a8 & local_d8)" ( (binary_expression "local_a8 & local_d8" identifier & identifier) )) == number_literal) && (binary_expression "(uVar43 & uVar25) == 0" (parenthesized_expression "(uVar43 & uVar25)" ( (binary_expression "uVar43 & uVar25" identifier & identifier) )) == number_literal)) )) (compound_statement "{\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" { (if_statement "if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" if (parenthesized_expression "((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0))" ( (binary_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)" (parenthesized_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb))" ( (binary_expression "local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)" (binary_expression "local_c0 + 1" identifier + number_literal) <= (binary_expression "(int)(uint)*(ushort *)(piVar23 + 0xb)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(piVar23 + 0xb)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 0xb)" ( (binary_expression "piVar23 + 0xb" identifier + number_literal) ))))) )) || (parenthesized_expression "(iVar38 = FUN_00031110(), iVar38 == 0)" ( (comma_expression "iVar38 = FUN_00031110(), iVar38 == 0" (assignment_expression "iVar38 = FUN_00031110()" identifier = (call_expression "FUN_00031110()" identifier (argument_list "()" ( )))) , (binary_expression "iVar38 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" { (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" identifier = true) ;) (expression_statement "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;" (assignment_expression "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34" (pointer_expression "*(int **)(piVar23[0xc] + local_c0 * 4)" * (cast_expression "(int **)(piVar23[0xc] + local_c0 * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar23[0xc] + local_c0 * 4)" ( (binary_expression "piVar23[0xc] + local_c0 * 4" (subscript_expression "piVar23[0xc]" identifier [ number_literal ]) + (binary_expression "local_c0 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "local_a8 = local_a8 | local_d8;" (assignment_expression "local_a8 = local_a8 | local_d8" identifier = (binary_expression "local_a8 | local_d8" identifier | identifier)) ;) (expression_statement "uVar25 = uVar25 | uVar43;" (assignment_expression "uVar25 = uVar25 | uVar43" identifier = (binary_expression "uVar25 | uVar43" identifier | identifier)) ;) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" identifier = (binary_expression "local_c0 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_000a05b6;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a0ba5;" goto statement_identifier ;) })) (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" identifier = true) ;) (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" identifier = (binary_expression "piVar34 + 0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar34 < piVar32)" ( (binary_expression "piVar34 < piVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0663:\n                      uVar25 = ~uVar25;" statement_identifier : (expression_statement "uVar25 = ~uVar25;" (assignment_expression "uVar25 = ~uVar25" identifier = (unary_expression "~uVar25" ~ identifier)) ;)) (expression_statement "uVar13 = ~local_a8 | 0x80000000;" (assignment_expression "uVar13 = ~local_a8 | 0x80000000" identifier = (binary_expression "~local_a8 | 0x80000000" (unary_expression "~local_a8" ~ identifier) | number_literal)) ;) }) (else_clause "else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" else (compound_statement "{\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" { (expression_statement "uVar25 = 0xffffffff;" (assignment_expression "uVar25 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar13 = 0xffffffff;" (assignment_expression "uVar13 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_c0._0_2_ = 0;" (assignment_expression "local_c0._0_2_ = 0" (field_expression "local_c0._0_2_" identifier . field_identifier) = number_literal) ;) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" identifier = number_literal) ;) }))) (expression_statement "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 10)" * (cast_expression "(undefined2 *)(piVar23 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 10)" ( (binary_expression "piVar23 + 10" identifier + number_literal) )))) = (cast_expression "(undefined2)local_c0" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 6)" * (cast_expression "(undefined2 *)(piVar23 + 6)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar23 + 6)" ( (binary_expression "piVar23 + 6" identifier + number_literal) )))) = (cast_expression "(undefined2)local_c0" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "piVar23[9] = 0x4241;" (assignment_expression "piVar23[9] = 0x4241" (subscript_expression "piVar23[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar43 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar43 = piVar30[uVar11 * 0x11 + 0xf]" identifier = (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" identifier [ (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ])) ;) (expression_statement "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];" (assignment_expression "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10]" identifier = (binary_expression "uVar13 & piVar30[uVar11 * 0x11 + 0x10]" identifier & (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]))) ;) (expression_statement "sVar2 = *(short *)((int)puVar22 + 0x2a);" (assignment_expression "sVar2 = *(short *)((int)puVar22 + 0x2a)" identifier = (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar31 = 0x3f;" (assignment_expression "uVar31 = 0x3f" identifier = number_literal) ;) (if_statement "if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }" if (parenthesized_expression "(sVar2 < 0x40)" ( (binary_expression "sVar2 < 0x40" identifier < number_literal) )) (compound_statement "{\n                      uVar31 = (int)sVar2;\n                    }" { (expression_statement "uVar31 = (int)sVar2;" (assignment_expression "uVar31 = (int)sVar2" identifier = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (if_statement "if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" if (parenthesized_expression "(0 < sVar2)" ( (binary_expression "0 < sVar2" number_literal < identifier) )) (compound_statement "{\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (do_statement "do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);" do (compound_statement "{\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      }" { (expression_statement "bVar8 = (byte)uVar26 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar26 & 0x1f" identifier = (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" ( (binary_expression "uVar25 & uVar43" identifier & identifier) )) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" if (parenthesized_expression "((uVar26 & 0x20) != 0)" ( (binary_expression "(uVar26 & 0x20) != 0" (parenthesized_expression "(uVar26 & 0x20)" ( (binary_expression "uVar26 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" { (expression_statement "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f)" identifier = (binary_expression "uVar13 >> ((byte)uVar26 & 0x1f)" identifier >> (parenthesized_expression "((byte)uVar26 & 0x1f)" ( (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (expression_statement "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);" (assignment_expression "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0)" identifier = (binary_expression "(local_c0 + 1) - (uint)((uVar27 & 1) == 0)" (parenthesized_expression "(local_c0 + 1)" ( (binary_expression "local_c0 + 1" identifier + number_literal) )) - (call_expression "(uint)((uVar27 & 1) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar27 & 1) == 0)" ( (binary_expression "(uVar27 & 1) == 0" (parenthesized_expression "(uVar27 & 1)" ( (binary_expression "uVar27 & 1" identifier & number_literal) )) == number_literal) ))))) ;) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar31 != uVar26)" ( (binary_expression "uVar31 != uVar26" identifier != identifier) )) ;) })) (if_statement "if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" if (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" ( (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) < number_literal) )) (compound_statement "{\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" { (expression_statement "local_c0 = local_c0 + -0x3f + (int)sVar2;" (assignment_expression "local_c0 = local_c0 + -0x3f + (int)sVar2" identifier = (binary_expression "local_c0 + -0x3f + (int)sVar2" (binary_expression "local_c0 + -0x3f" identifier + number_literal) + (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "piVar34 = (int *)FUN_00028510(local_3c);" (assignment_expression "piVar34 = (int *)FUN_00028510(local_3c)" identifier = (cast_expression "(int *)FUN_00028510(local_3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028510(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))))) ;) (if_statement "if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" if (parenthesized_expression "(piVar34 != (int *)0x0)" ( (binary_expression "piVar34 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" { (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" identifier = number_literal) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "piVar23[8] = (int)piVar34;" (assignment_expression "piVar23[8] = (int)piVar34" (subscript_expression "piVar23[8]" identifier [ number_literal ]) = (cast_expression "(int)piVar34" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar34 = unaff_EDI + 0x59c58;" (assignment_expression "*piVar34 = unaff_EDI + 0x59c58" (pointer_expression "*piVar34" * identifier) = (binary_expression "unaff_EDI + 0x59c58" identifier + number_literal)) ;) (expression_statement "piVar34[3] = (int)puVar22;" (assignment_expression "piVar34[3] = (int)puVar22" (subscript_expression "piVar34[3]" identifier [ number_literal ]) = (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar35 = (int *)local_d0[0x18];" (assignment_expression "piVar35 = (int *)local_d0[0x18]" identifier = (cast_expression "(int *)local_d0[0x18]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_d0[0x18]" identifier [ number_literal ]))) ;) (if_statement "if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }" if (parenthesized_expression "(piVar35 < piVar32)" ( (binary_expression "piVar35 < piVar32" identifier < identifier) )) (compound_statement "{\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }" { (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (do_statement "do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);" do (compound_statement "{\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        }" { (while_statement "while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" { (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" identifier = (binary_expression "iVar38 * 2" identifier * number_literal)) ;) (expression_statement "iVar14 = FUN_00030fa0(uVar40);" (assignment_expression "iVar14 = FUN_00030fa0(uVar40)" identifier = (call_expression "FUN_00030fa0(uVar40)" identifier (argument_list "(uVar40)" ( identifier )))) ;) (if_statement "if (iVar14 != 0) break;" if (parenthesized_expression "(iVar14 != 0)" ( (binary_expression "iVar14 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;" statement_identifier : (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" identifier = (binary_expression "piVar35 + 0xc" identifier + number_literal)) ;)) (if_statement "if (piVar32 <= piVar35) goto LAB_000a0858;" if (parenthesized_expression "(piVar32 <= piVar35)" ( (binary_expression "piVar32 <= piVar35" identifier <= identifier) )) (goto_statement "goto LAB_000a0858;" goto statement_identifier ;)) })) (expression_statement "uVar27 = piVar35[7];" (assignment_expression "uVar27 = piVar35[7]" identifier = (subscript_expression "piVar35[7]" identifier [ number_literal ])) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar33 = 0x80000000;" (assignment_expression "uVar33 = 0x80000000" identifier = number_literal) ;) (if_statement "if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" if (parenthesized_expression "((int)uVar27 < 0x40)" ( (binary_expression "(int)uVar27 < 0x40" (cast_expression "(int)uVar27" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" { (expression_statement "bVar39 = (uVar27 & 0x20) == 0;" (assignment_expression "bVar39 = (uVar27 & 0x20) == 0" identifier = (binary_expression "(uVar27 & 0x20) == 0" (parenthesized_expression "(uVar27 & 0x20)" ( (binary_expression "uVar27 & 0x20" identifier & number_literal) )) == number_literal)) ;) (expression_statement "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uint)!bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)!bVar39" ( (type_descriptor "uint" type_identifier) ) (unary_expression "!bVar39" ! 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 "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uint)bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)bVar39" ( (type_descriptor "uint" type_identifier) ) identifier) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;" if (parenthesized_expression "((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0)" ( (binary_expression "(local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0" (binary_expression "(local_78 & uVar33) != 0" (parenthesized_expression "(local_78 & uVar33)" ( (binary_expression "local_78 & uVar33" identifier & identifier) )) != number_literal) || (binary_expression "(uVar26 & uVar18) != 0" (parenthesized_expression "(uVar26 & uVar18)" ( (binary_expression "uVar26 & uVar18" identifier & identifier) )) != number_literal)) )) (goto_statement "goto LAB_000a07a0;" goto statement_identifier ;)) (expression_statement "uVar26 = uVar26 | uVar18;" (assignment_expression "uVar26 = uVar26 | uVar18" identifier = (binary_expression "uVar26 | uVar18" identifier | identifier)) ;) (expression_statement "local_70 = (undefined2)uVar27;" (assignment_expression "local_70 = (undefined2)uVar27" identifier = (cast_expression "(undefined2)uVar27" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_78 = local_78 | uVar33;" (assignment_expression "local_78 = local_78 | uVar33" identifier = (binary_expression "local_78 | uVar33" identifier | identifier)) ;) (expression_statement "*(undefined2 *)(piVar34[1] + iVar16) = local_70;" (assignment_expression "*(undefined2 *)(piVar34[1] + iVar16) = local_70" (pointer_expression "*(undefined2 *)(piVar34[1] + iVar16)" * (cast_expression "(undefined2 *)(piVar34[1] + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar34[1] + iVar16)" ( (binary_expression "piVar34[1] + iVar16" (subscript_expression "piVar34[1]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (expression_statement "puVar19 = (undefined4 *)FUN_0005dbf0();" (assignment_expression "puVar19 = (undefined4 *)FUN_0005dbf0()" identifier = (cast_expression "(undefined4 *)FUN_0005dbf0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005dbf0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar20 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }" if (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" ( (binary_expression "puVar19 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            puVar20 = (undefined *)*puVar19;\n                          }" { (expression_statement "puVar20 = (undefined *)*puVar19;" (assignment_expression "puVar20 = (undefined *)*puVar19" identifier = (cast_expression "(undefined *)*puVar19" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) })) (expression_statement "iVar16 = iVar16 + 2;" (assignment_expression "iVar16 = iVar16 + 2" identifier = (binary_expression "iVar16 + 2" identifier + number_literal)) ;) (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" identifier = (binary_expression "piVar35 + 0xc" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar35 < piVar32)" ( (binary_expression "piVar35 < piVar32" identifier < identifier) )) ;) (labeled_statement "LAB_000a0858:\n                        uVar26 = iVar38 * 4;" statement_identifier : (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;)) }) (else_clause "else {\n                        iVar16 = 0;\n                      }" else (compound_statement "{\n                        iVar16 = 0;\n                      }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) }))) (expression_statement "local_84 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "local_84 = &UNK_00064bb9 + unaff_EDI" identifier = (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" & identifier) + identifier)) ;) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) (if_statement "if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" if (parenthesized_expression "(sVar2 < 1)" ( (binary_expression "sVar2 < 1" identifier < number_literal) )) (compound_statement "{\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }" { (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar16)" ( (binary_expression "iVar14 + iVar16" identifier + identifier) )))) ;) }) (else_clause "else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" else (compound_statement "{\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (do_statement "do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);" do (compound_statement "{\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        }" { (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;) (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" identifier = (binary_expression "iVar38 * 2" identifier * number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar16)" ( (binary_expression "iVar14 + iVar16" identifier + identifier) )))) ;) (expression_statement "bVar8 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar27 & 0x1f" identifier = (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" identifier = (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" ( (binary_expression "uVar25 & uVar43" identifier & identifier) )) >> identifier) | (binary_expression "uVar13 << 0x20 - bVar8" identifier << (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((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                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }" { (expression_statement "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar13 >> ((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) )))) ;) })) (if_statement "if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" if (parenthesized_expression "((uVar18 & 1) != 0)" ( (binary_expression "(uVar18 & 1) != 0" (parenthesized_expression "(uVar18 & 1)" ( (binary_expression "uVar18 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" { (expression_statement "*puVar36 = (short)uVar27;" (assignment_expression "*puVar36 = (short)uVar27" (pointer_expression "*puVar36" * identifier) = (cast_expression "(short)uVar27" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar26 = uVar26 + 4;" (assignment_expression "uVar26 = uVar26 + 4" identifier = (binary_expression "uVar26 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16)" identifier = (cast_expression "(undefined2 *)(iVar14 + 2 + iVar16)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 2 + iVar16)" ( (binary_expression "iVar14 + 2 + iVar16" (binary_expression "iVar14 + 2" identifier + number_literal) + identifier) )))) ;) })) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" identifier = (binary_expression "uVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar31 != uVar27)" ( (binary_expression "uVar31 != uVar27" identifier != identifier) )) ;) }))) (if_statement "if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" if (parenthesized_expression "((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a)))" ( (binary_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))" (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" ( (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" identifier [ (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" identifier * number_literal) + number_literal) ]) < number_literal) )) && (parenthesized_expression "(0x3f < *(short *)((int)puVar22 + 0x2a))" ( (binary_expression "0x3f < *(short *)((int)puVar22 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" { (expression_statement "iVar16 = 0x3f;" (assignment_expression "iVar16 = 0x3f" identifier = number_literal) ;) (while_statement "while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" { (expression_statement "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16;" (assignment_expression "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16" (pointer_expression "*(short *)(iVar14 + iVar38 * 2)" * (cast_expression "(short *)(iVar14 + iVar38 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + iVar38 * 2)" ( (binary_expression "iVar14 + iVar38 * 2" identifier + (binary_expression "iVar38 * 2" identifier * number_literal)) )))) = (cast_expression "(short)iVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" * (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + iVar38 * 4)" ( (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + (binary_expression "iVar38 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" identifier = (binary_expression "iVar38 + 1" identifier + number_literal)) ;) (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;" if (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar16)" ( (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar16" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" * (cast_expression "(short *)((int)puVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar22 + 0x2a)" ( (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" identifier = (subscript_expression "piVar34[1]" identifier [ number_literal ])) ;) })) (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" identifier = (binary_expression "iVar38 * 4" identifier * number_literal)) ;) (expression_statement "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);" (assignment_expression "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2)" identifier = (cast_expression "(undefined2 *)(piVar34[1] + iVar38 * 2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar34[1] + iVar38 * 2)" ( (binary_expression "piVar34[1] + iVar38 * 2" (subscript_expression "piVar34[1]" identifier [ number_literal ]) + (binary_expression "iVar38 * 2" identifier * number_literal)) )))) ;) })) (expression_statement "*puVar36 = 0xffff;" (assignment_expression "*puVar36 = 0xffff" (pointer_expression "*puVar36" * identifier) = number_literal) ;) (expression_statement "*(undefined **)(piVar34[8] + uVar26) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + uVar26) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + uVar26)" * (cast_expression "(undefined **)(piVar34[8] + uVar26)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar34[8] + uVar26)" ( (binary_expression "piVar34[8] + uVar26" (subscript_expression "piVar34[8]" identifier [ number_literal ]) + identifier) )))) = identifier) ;) (expression_statement "iVar16 = piVar10[10];" (assignment_expression "iVar16 = piVar10[10]" identifier = (subscript_expression "piVar10[10]" identifier [ number_literal ])) ;) (expression_statement "piVar10[10] = iVar16 + 1;" (assignment_expression "piVar10[10] = iVar16 + 1" (subscript_expression "piVar10[10]" identifier [ number_literal ]) = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "local_b8[2] = iVar16;" (assignment_expression "local_b8[2] = iVar16" (subscript_expression "local_b8[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000497a0(local_c0 + 1,0);" (call_expression "FUN_000497a0(local_c0 + 1,0)" identifier (argument_list "(local_c0 + 1,0)" ( (binary_expression "local_c0 + 1" identifier + number_literal) , number_literal ))) ;) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" identifier = (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_b8 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_b8 + 9)" ( (binary_expression "local_b8 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(local_d0[0x13] + 4);" (assignment_expression "iVar16 = *(int *)(local_d0[0x13] + 4)" identifier = (pointer_expression "*(int *)(local_d0[0x13] + 4)" * (cast_expression "(int *)(local_d0[0x13] + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_d0[0x13] + 4)" ( (binary_expression "local_d0[0x13] + 4" (subscript_expression "local_d0[0x13]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iVar14 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar14 = uVar11 * 0x44 + iVar16" identifier = (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" identifier * number_literal) + identifier)) ;) (if_statement "if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" if (parenthesized_expression "((*(byte *)(iVar14 + 0x2d) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar14 + 0x2d) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar14 + 0x2d) & 0x10)" ( (binary_expression "*(byte *)(iVar14 + 0x2d) & 0x10" (pointer_expression "*(byte *)(iVar14 + 0x2d)" * (cast_expression "(byte *)(iVar14 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x2d)" ( (binary_expression "iVar14 + 0x2d" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }" { (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "local_b4 = (int *)0x0;" (assignment_expression "local_b4 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" else (compound_statement "{\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" { (expression_statement "local_b4 = (int *)FUN_000497a0(0,0);" (assignment_expression "local_b4 = (int *)FUN_000497a0(0,0)" identifier = (cast_expression "(int *)FUN_000497a0(0,0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal ))))) ;) (expression_statement "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));" (call_expression "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20))" identifier (argument_list "(0,*(undefined4 *)(iVar14 + 0x20))" ( number_literal , (pointer_expression "*(undefined4 *)(iVar14 + 0x20)" * (cast_expression "(undefined4 *)(iVar14 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x20)" ( (binary_expression "iVar14 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" identifier = (call_expression "FUN_000497a0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) }))) (if_statement "if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" { (expression_statement "iVar28 = piVar10[0xe];" (assignment_expression "iVar28 = piVar10[0xe]" identifier = (subscript_expression "piVar10[0xe]" identifier [ number_literal ])) ;) (expression_statement "iVar37 = iVar28 + -1;" (assignment_expression "iVar37 = iVar28 + -1" identifier = (binary_expression "iVar28 + -1" identifier + number_literal)) ;) (expression_statement "piVar10[0xe] = iVar37;" (assignment_expression "piVar10[0xe] = iVar37" (subscript_expression "piVar10[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);" (call_expression "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28)" identifier (argument_list "(piVar10,local_74,iVar37,0x10,iVar28)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "piVar23[9] = piVar23[9] | 0x20000;" (assignment_expression "piVar23[9] = piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" identifier [ number_literal ]) = (binary_expression "piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" identifier [ number_literal ]) | number_literal)) ;) })) (if_statement "if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" if (parenthesized_expression "(*(char *)((int)piVar10 + 0x13) == '\0')" ( (binary_expression "*(char *)((int)piVar10 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar10 + 0x13)" * (cast_expression "(char *)((int)piVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }" { (expression_statement "iVar28 = piVar10[0xb] + 1;" (assignment_expression "iVar28 = piVar10[0xb] + 1" identifier = (binary_expression "piVar10[0xb] + 1" (subscript_expression "piVar10[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar10[0xb] = iVar28;" (assignment_expression "piVar10[0xb] = iVar28" (subscript_expression "piVar10[0xb]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" else (compound_statement "{\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" { (expression_statement "bVar8 = *(char *)((int)piVar10 + 0x13) - 1;" (assignment_expression "bVar8 = *(char *)((int)piVar10 + 0x13) - 1" identifier = (binary_expression "*(char *)((int)piVar10 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar10 + 0x13)" * (cast_expression "(char *)((int)piVar10 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal)) ;) (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar8;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar8" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" * (cast_expression "(byte *)((int)piVar10 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar10 + 0x13)" ( (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "iVar28 = piVar10[bVar8 + 0x24];" (assignment_expression "iVar28 = piVar10[bVar8 + 0x24]" identifier = (subscript_expression "piVar10[bVar8 + 0x24]" identifier [ (binary_expression "bVar8 + 0x24" identifier + number_literal) ])) ;) }))) (expression_statement "iVar37 = FUN_0009c790(iVar28,0,0,0,0);" (assignment_expression "iVar37 = FUN_0009c790(iVar28,0,0,0,0)" identifier = (call_expression "FUN_0009c790(iVar28,0,0,0,0)" identifier (argument_list "(iVar28,0,0,0,0)" ( identifier , number_literal , number_literal , number_literal , number_literal )))) ;) (expression_statement "FUN_000497a0(iVar28,0);" (call_expression "FUN_000497a0(iVar28,0)" identifier (argument_list "(iVar28,0)" ( identifier , number_literal ))) ;) (if_statement "if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" if (parenthesized_expression "(0 < piVar17[0x1a])" ( (binary_expression "0 < piVar17[0x1a]" number_literal < (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) )) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" { (expression_statement "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" ( (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12" (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) * number_literal)) + number_literal) )))) = number_literal) ;) })) (if_statement "if (local_74 != 0) {\n                        FUN_00049570();\n                      }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                        FUN_00049570();\n                      }" { (expression_statement "FUN_00049570();" (call_expression "FUN_00049570()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" if (parenthesized_expression "((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0)" ( (binary_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10)" ( (binary_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10" (pointer_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" * (cast_expression "(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2d + uVar11 * 0x44)" ( (binary_expression "iVar16 + 0x2d + uVar11 * 0x44" (binary_expression "iVar16 + 0x2d" identifier + number_literal) + (binary_expression "uVar11 * 0x44" identifier * number_literal)) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        FUN_000497a0(iVar14 + 1,0);\n                      }" { (expression_statement "FUN_000497a0(iVar14 + 1,0);" (call_expression "FUN_000497a0(iVar14 + 1,0)" identifier (argument_list "(iVar14 + 1,0)" ( (binary_expression "iVar14 + 1" identifier + number_literal) , number_literal ))) ;) }) (else_clause "else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" else (compound_statement "{\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" { (if_statement "if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" if (parenthesized_expression "((int)local_b4 < 0)" ( (binary_expression "(int)local_b4 < 0" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" { (expression_statement "local_b4 = (int *)(piVar17[0x1a] + -1);" (assignment_expression "local_b4 = (int *)(piVar17[0x1a] + -1)" identifier = (cast_expression "(int *)(piVar17[0x1a] + -1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x1a] + -1)" ( (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) + number_literal) )))) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + (int)local_b4 * 0x14)" ( (binary_expression "piVar17[0x19] + (int)local_b4 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "(int)local_b4 * 0x14" (cast_expression "(int)local_b4" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = iVar37 + iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar37 + iVar38" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = (binary_expression "iVar37 + iVar38" identifier + identifier)) ;) (expression_statement "iVar16 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar16 = uVar11 * 0x44 + iVar16" identifier = (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" identifier * number_literal) + identifier)) ;) (expression_statement "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);" (call_expression "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" identifier (argument_list "(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" ( (subscript_expression "local_b8[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined4 *)(iVar16 + 0x28)" * (cast_expression "(undefined4 *)(iVar16 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x28)" ( (binary_expression "iVar16 + 0x28" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "FUN_000497a0(iVar14,0);" (call_expression "FUN_000497a0(iVar14,0)" identifier (argument_list "(iVar14,0)" ( identifier , number_literal ))) ;) (expression_statement "pbVar1 = (byte *)(iVar16 + 0x2d);" (assignment_expression "pbVar1 = (byte *)(iVar16 + 0x2d)" identifier = (cast_expression "(byte *)(iVar16 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + 0x2d)" ( (binary_expression "iVar16 + 0x2d" identifier + number_literal) )))) ;) (expression_statement "*pbVar1 = *pbVar1 & 0xef;" (assignment_expression "*pbVar1 = *pbVar1 & 0xef" (pointer_expression "*pbVar1" * identifier) = (binary_expression "*pbVar1 & 0xef" (pointer_expression "*pbVar1" * identifier) & number_literal)) ;) }))) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" identifier = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) (if_statement "if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" if (parenthesized_expression "(0 < iVar38)" ( (binary_expression "0 < iVar38" number_literal < identifier) )) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" { (expression_statement "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3" (pointer_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" * (cast_expression "(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14 + -0x12)" ( (binary_expression "piVar17[0x19] + iVar38 * 0x14 + -0x12" (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar38 * 0x14" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" identifier = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) })) (if_statement "if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }" if (parenthesized_expression "(iVar14 < 0)" ( (binary_expression "iVar14 < 0" identifier < number_literal) )) (compound_statement "{\n                        iVar14 = iVar38 + -1;\n                      }" { (expression_statement "iVar14 = iVar38 + -1;" (assignment_expression "iVar14 = iVar38 + -1" identifier = (binary_expression "iVar38 + -1" identifier + number_literal)) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + iVar14 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar14 * 0x14)" ( (binary_expression "piVar17[0x19] + iVar14 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar14 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar38" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n                        FUN_0002f640();\n                      }" { (expression_statement "FUN_0002f640();" (call_expression "FUN_0002f640()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar38 = piVar17[0x1a] + -1;" (assignment_expression "iVar38 = piVar17[0x1a] + -1" identifier = (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (compound_statement "{\n                        iVar38 = iVar12;\n                      }" { (expression_statement "iVar38 = iVar12;" (assignment_expression "iVar38 = iVar12" identifier = identifier) ;) })) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" identifier = (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" & identifier) + identifier)) ;) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" if (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" ( (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" * (cast_expression "(char *)(*piVar17 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar17 + 0x4d)" ( (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" * identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" { (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14)" identifier = (cast_expression "(undefined *)(piVar17[0x19] + iVar38 * 0x14)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14)" ( (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" identifier [ number_literal ]) + (binary_expression "iVar38 * 0x14" identifier * number_literal)) )))) ;) })) (expression_statement "*(int *)(puVar20 + 8) = piVar17[0x1a];" (assignment_expression "*(int *)(puVar20 + 8) = piVar17[0x1a]" (pointer_expression "*(int *)(puVar20 + 8)" * (cast_expression "(int *)(puVar20 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 8)" ( (binary_expression "puVar20 + 8" identifier + number_literal) )))) = (subscript_expression "piVar17[0x1a]" identifier [ number_literal ])) ;) })) (labeled_statement "LAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" statement_identifier : (if_statement "if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" if (parenthesized_expression "(local_74 != 0)" ( (binary_expression "local_74 != 0" identifier != number_literal) )) (compound_statement "{\n                      FUN_00039fe0();\n                    }" { (expression_statement "FUN_00039fe0();" (call_expression "FUN_00039fe0()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;)) })) (expression_statement "piVar17 = (int *)piVar10[0x1d];" (assignment_expression "piVar17 = (int *)piVar10[0x1d]" identifier = (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ]))) ;) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }" if (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" ( (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[0x1d]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    piVar17 = piVar10;\n                  }" { (expression_statement "piVar17 = piVar10;" (assignment_expression "piVar17 = piVar10" identifier = identifier) ;) })) (if_statement "if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }" if (parenthesized_expression "(*(char *)((int)piVar17 + 0xc5) == '\x02')" ( (binary_expression "*(char *)((int)piVar17 + 0xc5) == '\x02'" (pointer_expression "*(char *)((int)piVar17 + 0xc5)" * (cast_expression "(char *)((int)piVar17 + 0xc5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar17 + 0xc5)" ( (binary_expression "(int)piVar17 + 0xc5" (cast_expression "(int)piVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n                    FUN_00067300(uVar29);\n                  }" { (expression_statement "FUN_00067300(uVar29);" (call_expression "FUN_00067300(uVar29)" identifier (argument_list "(uVar29)" ( identifier ))) ;) })) (expression_statement "local_b8[8] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_b8[8] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_b8[8]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar3 + 0x68)" * (cast_expression "(int *)(iVar3 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x68)" ( (binary_expression "iVar3 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = local_88 + 1;" (assignment_expression "iVar12 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) (expression_statement "uVar40 = FUN_0009d860(local_88,local_b8,uVar40);" (assignment_expression "uVar40 = FUN_0009d860(local_88,local_b8,uVar40)" identifier = (call_expression "FUN_0009d860(local_88,local_b8,uVar40)" identifier (argument_list "(local_88,local_b8,uVar40)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_d0[8] = local_b8[6];" (assignment_expression "local_d0[8] = local_b8[6]" (subscript_expression "local_d0[8]" identifier [ number_literal ]) = (subscript_expression "local_b8[6]" identifier [ number_literal ])) ;) (expression_statement "local_b8 = local_b8 + 0x11;" (assignment_expression "local_b8 = local_b8 + 0x11" identifier = (binary_expression "local_b8 + 0x11" identifier + number_literal)) ;) (expression_statement "local_88 = iVar12;" (assignment_expression "local_88 = iVar12" identifier = identifier) ;) }) while (parenthesized_expression "(local_a0 != iVar12)" ( (binary_expression "local_a0 != iVar12" identifier != identifier) )) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })) })))) })) }) (else_clause "else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" else (compound_statement "{\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" { (labeled_statement "LAB_000a0070:\n          iVar38 = local_4c;" statement_identifier : (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" identifier = identifier) ;)) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" identifier = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;" (assignment_expression "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" identifier = (binary_expression "iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "iVar12 + 8" identifier + number_literal) + (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)local_58[0] + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58[0] + 0x2e)" ( (binary_expression "(int)local_58[0] + 0x2e" (cast_expression "(int)local_58[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_58[0]" identifier [ number_literal ])) + number_literal) )))) * number_literal))) ;) (expression_statement "uVar13 = iVar12 + 8;" (assignment_expression "uVar13 = iVar12 + 8" identifier = (binary_expression "iVar12 + 8" identifier + number_literal)) ;) (expression_statement "iVar12 = *(int *)*local_58[0];" (assignment_expression "iVar12 = *(int *)*local_58[0]" identifier = (pointer_expression "*(int *)*local_58[0]" * (cast_expression "(int *)*local_58[0]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_58[0]" * (subscript_expression "local_58[0]" identifier [ number_literal ]))))) ;) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" * (cast_expression "(undefined4 *)(local_4c + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x24)" ( (binary_expression "local_4c + 0x24" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_40 = 20000;" (assignment_expression "local_40 = 20000" identifier = number_literal) ;) (expression_statement "*(int *)(local_4c + 0x30) = local_4c + 0x38;" (assignment_expression "*(int *)(local_4c + 0x30) = local_4c + 0x38" (pointer_expression "*(int *)(local_4c + 0x30)" * (cast_expression "(int *)(local_4c + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x30)" ( (binary_expression "local_4c + 0x30" identifier + number_literal) )))) = (binary_expression "local_4c + 0x38" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)(local_4c + 0x28) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x28) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x28)" * (cast_expression "(undefined2 *)(local_4c + 0x28)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x28)" ( (binary_expression "local_4c + 0x28" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(local_4c + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(local_4c + 0x2c) = 3" (pointer_expression "*(undefined2 *)(local_4c + 0x2c)" * (cast_expression "(undefined2 *)(local_4c + 0x2c)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_4c + 0x2c)" ( (binary_expression "local_4c + 0x2c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" if (parenthesized_expression "(uVar13 < uVar11)" ( (binary_expression "uVar13 < uVar11" identifier < identifier) )) (compound_statement "{\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" { (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (do_statement "do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);" do (compound_statement "{\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            }" { (expression_statement "*(char *)(iVar38 + 0x10) = cVar7;" (assignment_expression "*(char *)(iVar38 + 0x10) = cVar7" (pointer_expression "*(char *)(iVar38 + 0x10)" * (cast_expression "(char *)(iVar38 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x10)" ( (binary_expression "iVar38 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "local_40 = local_40 + 1000;" (assignment_expression "local_40 = local_40 + 1000" identifier = (binary_expression "local_40 + 1000" identifier + number_literal)) ;) (if_statement "if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" if (parenthesized_expression "(piVar17[0x7a] < 1)" ( (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\n                uVar25 = 0;\n                uVar43 = 0;\n              }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) }) (else_clause "else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" else (if_statement "if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" if (parenthesized_expression "(*(int *)(uVar13 + 0x28) == piVar17[0x7b])" ( (binary_expression "*(int *)(uVar13 + 0x28) == piVar17[0x7b]" (pointer_expression "*(int *)(uVar13 + 0x28)" * (cast_expression "(int *)(uVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x28)" ( (binary_expression "uVar13 + 0x28" identifier + number_literal) )))) == (subscript_expression "piVar17[0x7b]" identifier [ number_literal ])) )) (compound_statement "{\n                uVar25 = 1;\n                uVar43 = 0;\n              }" { (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" else (compound_statement "{\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);" do (compound_statement "{\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                }" { (expression_statement "uVar31 = uVar25 + 1;" (assignment_expression "uVar31 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (if_statement "if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" if (parenthesized_expression "(uVar31 == piVar17[0x7a])" ( (binary_expression "uVar31 == piVar17[0x7a]" identifier == (subscript_expression "piVar17[0x7a]" identifier [ number_literal ])) )) (compound_statement "{\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a014b;" goto statement_identifier ;) })) (expression_statement "iVar16 = uVar25 + 0x7c;" (assignment_expression "iVar16 = uVar25 + 0x7c" identifier = (binary_expression "uVar25 + 0x7c" identifier + number_literal)) ;) (expression_statement "uVar25 = uVar31;" (assignment_expression "uVar25 = uVar31" identifier = identifier) ;) }) while (parenthesized_expression "(*(int *)(uVar13 + 0x28) != piVar17[iVar16])" ( (binary_expression "*(int *)(uVar13 + 0x28) != piVar17[iVar16]" (pointer_expression "*(int *)(uVar13 + 0x28)" * (cast_expression "(int *)(uVar13 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x28)" ( (binary_expression "uVar13 + 0x28" identifier + number_literal) )))) != (subscript_expression "piVar17[iVar16]" identifier [ identifier ])) )) ;) (expression_statement "bVar8 = (byte)uVar31 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar31 & 0x1f" identifier = (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal)) ;) (expression_statement "uVar26 = 1 << ((byte)uVar31 & 0x1f);" (assignment_expression "uVar26 = 1 << ((byte)uVar31 & 0x1f)" identifier = (binary_expression "1 << ((byte)uVar31 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar31 & 0x1f)" ( (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" identifier = identifier) ;) (expression_statement "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8" identifier = (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" number_literal << identifier) | (binary_expression "1U >> 0x20 - bVar8" number_literal >> (binary_expression "0x20 - bVar8" number_literal - identifier)))) ;) (if_statement "if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" if (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" { (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" identifier = number_literal) ;) (expression_statement "uVar43 = uVar26;" (assignment_expression "uVar43 = uVar26" identifier = identifier) ;) })) }))))) (labeled_statement "LAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;" statement_identifier : (expression_statement "*(uint *)(iVar38 + 8) = uVar25;" (assignment_expression "*(uint *)(iVar38 + 8) = uVar25" (pointer_expression "*(uint *)(iVar38 + 8)" * (cast_expression "(uint *)(iVar38 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 8)" ( (binary_expression "iVar38 + 8" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(uint *)(iVar38 + 0xc) = uVar43;" (assignment_expression "*(uint *)(iVar38 + 0xc) = uVar43" (pointer_expression "*(uint *)(iVar38 + 0xc)" * (cast_expression "(uint *)(iVar38 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" if (parenthesized_expression "(*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0)" ( (binary_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0" (pointer_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38)" * (cast_expression "(int *)(*(int *)(uVar13 + 0x10) + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar13 + 0x10) + 0x38)" ( (binary_expression "*(int *)(uVar13 + 0x10) + 0x38" (pointer_expression "*(int *)(uVar13 + 0x10)" * (cast_expression "(int *)(uVar13 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar13 + 0x10)" ( (binary_expression "uVar13 + 0x10" identifier + number_literal) )))) + number_literal) )))) == number_literal) )) (compound_statement "{\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }" { (expression_statement "iVar16 = FUN_00064890();" (assignment_expression "iVar16 = FUN_00064890()" identifier = (call_expression "FUN_00064890()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" else (compound_statement "{\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" { (expression_statement "uVar25 = uVar13 + 0x44;" (assignment_expression "uVar25 = uVar13 + 0x44" identifier = (binary_expression "uVar13 + 0x44" identifier + number_literal)) ;) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" identifier = number_literal) ;) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" identifier = number_literal) ;) (while_statement "while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" while (parenthesized_expression "(uVar25 < uVar11)" ( (binary_expression "uVar25 < uVar11" identifier < identifier) )) (compound_statement "{\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" { (labeled_statement "LAB_000a0d2c:\n                  uVar31 = uVar25;" statement_identifier : (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" identifier = identifier) ;)) (expression_statement "uVar25 = uVar25 + 0x44;" (assignment_expression "uVar25 = uVar25 + 0x44" identifier = (binary_expression "uVar25 + 0x44" identifier + number_literal)) ;) (if_statement "if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" if (parenthesized_expression "(local_d8 == 0 && uVar43 == 0)" ( (binary_expression "local_d8 == 0 && uVar43 == 0" (binary_expression "local_d8 == 0" identifier == number_literal) && (binary_expression "uVar43 == 0" identifier == number_literal)) )) (compound_statement "{\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" { (while_statement "while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" while (parenthesized_expression "(uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0)" ( (comma_expression "uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0" (assignment_expression "uVar25 = uVar31 + 0x44" identifier = (binary_expression "uVar31 + 0x44" identifier + number_literal)) , (binary_expression "(*(byte *)(uVar31 + 0x24) & 10) == 0" (parenthesized_expression "(*(byte *)(uVar31 + 0x24) & 10)" ( (binary_expression "*(byte *)(uVar31 + 0x24) & 10" (pointer_expression "*(byte *)(uVar31 + 0x24)" * (cast_expression "(byte *)(uVar31 + 0x24)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x24)" ( (binary_expression "uVar31 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" { (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" identifier = identifier) ;) (if_statement "if (uVar11 <= uVar25) goto LAB_000a0d7c;" if (parenthesized_expression "(uVar11 <= uVar25)" ( (binary_expression "uVar11 <= uVar25" identifier <= identifier) )) (goto_statement "goto LAB_000a0d7c;" goto statement_identifier ;)) })) })) (if_statement "if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" if (parenthesized_expression "(piVar17[0x7a] < 1)" ( (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) < number_literal) )) (compound_statement "{\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" { (labeled_statement "LAB_000a0d70:\n                    if (uVar11 <= uVar25) break;" statement_identifier : (if_statement "if (uVar11 <= uVar25) break;" if (parenthesized_expression "(uVar11 <= uVar25)" ( (binary_expression "uVar11 <= uVar25" identifier <= identifier) )) (break_statement "break;" break ;))) (goto_statement "goto LAB_000a0d2c;" goto statement_identifier ;) })) (if_statement "if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" if (parenthesized_expression "(*(int *)(uVar31 + 0x28) != piVar17[0x7b])" ( (binary_expression "*(int *)(uVar31 + 0x28) != piVar17[0x7b]" (pointer_expression "*(int *)(uVar31 + 0x28)" * (cast_expression "(int *)(uVar31 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x28)" ( (binary_expression "uVar31 + 0x28" identifier + number_literal) )))) != (subscript_expression "piVar17[0x7b]" identifier [ number_literal ])) )) (compound_statement "{\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (while_statement "while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" while (parenthesized_expression "(uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27)" ( (comma_expression "uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27" (assignment_expression "uVar27 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) , (binary_expression "piVar17[0x7a] != uVar27" (subscript_expression "piVar17[0x7a]" identifier [ number_literal ]) != identifier)) )) (compound_statement "{\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" { (expression_statement "iVar16 = uVar26 + 0x7c;" (assignment_expression "iVar16 = uVar26 + 0x7c" identifier = (binary_expression "uVar26 + 0x7c" identifier + number_literal)) ;) (expression_statement "uVar26 = uVar27;" (assignment_expression "uVar26 = uVar27" identifier = identifier) ;) (if_statement "if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" if (parenthesized_expression "(*(int *)(uVar31 + 0x28) == piVar17[iVar16])" ( (binary_expression "*(int *)(uVar31 + 0x28) == piVar17[iVar16]" (pointer_expression "*(int *)(uVar31 + 0x28)" * (cast_expression "(int *)(uVar31 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar31 + 0x28)" ( (binary_expression "uVar31 + 0x28" identifier + number_literal) )))) == (subscript_expression "piVar17[iVar16]" identifier [ identifier ])) )) (compound_statement "{\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" { (expression_statement "uVar31 = uVar27 >> 5 & 1;" (assignment_expression "uVar31 = uVar27 >> 5 & 1" identifier = (binary_expression "uVar27 >> 5 & 1" (binary_expression "uVar27 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "uVar26 = uVar31 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar26 = uVar31 << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "uVar31 << ((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 "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" identifier = (binary_expression "(uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(uVar31 ^ 1)" ( (binary_expression "uVar31 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar27 & 0x1f)" ( (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (goto_statement "goto LAB_000a0dc9;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_000a0d70;" goto statement_identifier ;) })) (expression_statement "uVar31 = 1;" (assignment_expression "uVar31 = 1" identifier = number_literal) ;) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;" statement_identifier : (expression_statement "uVar43 = uVar43 | uVar31;" (assignment_expression "uVar43 = uVar43 | uVar31" identifier = (binary_expression "uVar43 | uVar31" identifier | identifier)) ;)) (expression_statement "local_d8 = local_d8 | uVar26;" (assignment_expression "local_d8 = local_d8 | uVar26" identifier = (binary_expression "local_d8 | uVar26" identifier | identifier)) ;) })) (labeled_statement "LAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);" statement_identifier : (expression_statement "iVar16 = FUN_0005b240(uVar43,local_d8);" (assignment_expression "iVar16 = FUN_0005b240(uVar43,local_d8)" identifier = (call_expression "FUN_0005b240(uVar43,local_d8)" identifier (argument_list "(uVar43,local_d8)" ( identifier , identifier )))) ;)) }))) (if_statement "if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" if (parenthesized_expression "((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))))" ( (binary_expression "(iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) && (parenthesized_expression "((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" ( (parenthesized_expression "(*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))" ( (binary_expression "*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" (binary_expression "*(char *)((int)local_58[1] + 9) == '\0'" (pointer_expression "*(char *)((int)local_58[1] + 9)" * (cast_expression "(char *)((int)local_58[1] + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_58[1] + 9)" ( (binary_expression "(int)local_58[1] + 9" (cast_expression "(int)local_58[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_58[1]" identifier [ number_literal ])) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" ( (comma_expression "iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0" (assignment_expression "iVar16 = FUN_000650b0(uVar43,local_d8)" identifier = (call_expression "FUN_000650b0(uVar43,local_d8)" identifier (argument_list "(uVar43,local_d8)" ( identifier , identifier )))) , (binary_expression "iVar16 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }" { (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" identifier = (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar43 >> 0x10)" ( (binary_expression "uVar43 >> 0x10" identifier >> number_literal) )))) ;) (if_statement "if (*(char *)(iVar12 + 0x4d) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar12 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x4d)" * (cast_expression "(char *)(iVar12 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x4d)" ( (binary_expression "iVar12 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) }) (else_clause "else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" else (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" { (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" identifier = (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" ( identifier )) (argument_list "(uVar43 >> 0x10)" ( (binary_expression "uVar43 >> 0x10" identifier >> number_literal) )))) ;) (if_statement "if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" if (parenthesized_expression "(iVar16 != 0x65)" ( (binary_expression "iVar16 != 0x65" identifier != number_literal) )) (compound_statement "{\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" { (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a0bd0;" goto statement_identifier ;) })) (expression_statement "FUN_00052380(0x1c,unaff_EDI + 0x66219);" (call_expression "FUN_00052380(0x1c,unaff_EDI + 0x66219)" identifier (argument_list "(0x1c,unaff_EDI + 0x66219)" ( number_literal , (binary_expression "unaff_EDI + 0x66219" identifier + number_literal) ))) ;) }))) (expression_statement "cVar7 = cVar7 + '\x01';" (assignment_expression "cVar7 = cVar7 + '\x01'" identifier = (binary_expression "cVar7 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "uVar13 = uVar13 + 0x44;" (assignment_expression "uVar13 = uVar13 + 0x44" identifier = (binary_expression "uVar13 + 0x44" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 < uVar11)" ( (binary_expression "uVar13 < uVar11" identifier < identifier) )) ;) })) (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00063ca0();" (call_expression "FUN_00063ca0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" { (if_statement "if (local_d0[2] == 0) goto LAB_000a0ea8;" if (parenthesized_expression "(local_d0[2] == 0)" ( (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000a0ea8;" goto statement_identifier ;)) (expression_statement "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));" (call_expression "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]))" identifier (argument_list "(CONCAT22(uVar9,(short)local_d0[0x12]))" ( (call_expression "CONCAT22(uVar9,(short)local_d0[0x12])" identifier (argument_list "(uVar9,(short)local_d0[0x12])" ( identifier , (cast_expression "(short)local_d0[0x12]" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (subscript_expression "local_d0[0x12]" identifier [ number_literal ])) ))) ))) ;) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;" if (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" * (cast_expression "(char *)(iVar4 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x4d)" ( (binary_expression "iVar4 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000a0239;" goto statement_identifier ;)) })) }))) })) (labeled_statement "LAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];" statement_identifier : (expression_statement "piVar10[0x20] = local_d0[10];" (assignment_expression "piVar10[0x20] = local_d0[10]" (subscript_expression "piVar10[0x20]" identifier [ number_literal ]) = (subscript_expression "local_d0[10]" identifier [ number_literal ])) ;)) (expression_statement "FUN_0003a3b0();" (call_expression "FUN_0003a3b0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" else (if_statement "if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" if (parenthesized_expression "(local_d0 != (int *)0x0)" ( (binary_expression "local_d0 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" { (expression_statement "FUN_00026590();" (call_expression "FUN_00026590()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_000a0bf2;" goto statement_identifier ;) })))) })) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" { (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_d0;" return identifier ;) (labeled_statement "LAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" statement_identifier : (expression_statement "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" (assignment_expression "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" identifier = (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" * (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" ( (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" * (cast_expression "(int *)(iVar38 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 4)" ( (binary_expression "iVar38 + 4" identifier + number_literal) )))) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))))) ;)) (if_statement "if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(iVar16 < 0)" ( (binary_expression "iVar16 < 0" identifier < number_literal) )) (compound_statement "{\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }" { (if_statement "if (iVar16 != -1) goto LAB_000a14f9;" if (parenthesized_expression "(iVar16 != -1)" ( (binary_expression "iVar16 != -1" identifier != number_literal) )) (goto_statement "goto LAB_000a14f9;" goto statement_identifier ;)) }) (else_clause "else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" else (if_statement "if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" if (parenthesized_expression "(*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0')" ( (binary_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0'" (pointer_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" * (cast_expression "(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" ( (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc" (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4)" (binary_expression "iVar16 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(*(int *)(iVar38 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(iVar38 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar38 + 0xc) + 4)" ( (binary_expression "*(int *)(iVar38 + 0xc) + 4" (pointer_expression "*(int *)(iVar38 + 0xc)" * (cast_expression "(int *)(iVar38 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0xc)" ( (binary_expression "iVar38 + 0xc" identifier + number_literal) )))) + number_literal) ))))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" { (labeled_statement "LAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" statement_identifier : (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;) })))) (labeled_statement "LAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" statement_identifier : (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x32)" ( (binary_expression "iVar38 + 0x32" identifier + number_literal) ))))) ;)) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (if_statement "if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;" if (parenthesized_expression "((int)uVar13 <= (int)uVar11)" ( (binary_expression "(int)uVar13 <= (int)uVar11" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000a13d9;" goto statement_identifier ;)) (goto_statement "goto LAB_000a132f;" goto statement_identifier ;) (labeled_statement "LAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;" statement_identifier : (if_statement "if (uVar11 == uVar13) goto LAB_000a13e1;" if (parenthesized_expression "(uVar11 == uVar13)" ( (binary_expression "uVar11 == uVar13" identifier == identifier) )) (goto_statement "goto LAB_000a13e1;" goto statement_identifier ;))) (labeled_statement "LAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);" statement_identifier : (expression_statement "iVar38 = *(int *)(iVar38 + 0x14);" (assignment_expression "iVar38 = *(int *)(iVar38 + 0x14)" identifier = (pointer_expression "*(int *)(iVar38 + 0x14)" * (cast_expression "(int *)(iVar38 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + 0x14)" ( (binary_expression "iVar38 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar38 == 0) goto LAB_000a1530;" if (parenthesized_expression "(iVar38 == 0)" ( (binary_expression "iVar38 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a1530;" goto statement_identifier ;)) (goto_statement "goto LAB_000a12fb;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_declarator * 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 (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (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 *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = 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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) , (binary_expression (pointer_expression * IDENT) < LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) + LIT) & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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) ) IDENT)) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - IDENT) ))) & LIT) ))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (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) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & 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) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (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) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_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) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , IDENT ))) ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression IDENT * LIT)) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * IDENT)) )) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) )))) ;) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( ))) , (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT == (char_literal ' escape_sequence ')))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) , 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) )))) = (binary_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 = (subscript_expression IDENT [ LIT ])) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (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 ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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) )))) < LIT) ))) )) (goto_statement goto statement_identifier ;)) (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 == (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (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 ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (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 ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))))) ))) )) && (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ IDENT ])) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( BOOL )) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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) ;)) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 = (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) && (parenthesized_expression ( (binary_expression (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 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 IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (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 IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )))) & LIT) )) + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (break_statement break ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) }))) (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 = (cast_expression ( (type_descriptor TYPE) ) 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 IDENT + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (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) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (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 IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) )))) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (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 ]) = LIT) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == 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 ')) ))) )) (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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) + LIT) )))) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (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 (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (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) )))) & LIT) )) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & IDENT) )) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (subscript_expression (subscript_expression IDENT [ LIT ]) [ LIT ]) * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & IDENT) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & IDENT) )) != LIT)) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) ))))) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & (subscript_expression IDENT [ LIT ])) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression IDENT & (subscript_expression IDENT [ 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) )))) | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (binary_expression IDENT * LIT)) , (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) , (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) - IDENT) )) * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (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) )))) = (binary_expression IDENT - LIT)) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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) )))) = 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 (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression IDENT & LIT)) ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (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 IDENT + LIT) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_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) )))) < 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) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )) [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) })) }) (else_clause else (compound_statement { (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) ))) )) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ) (compound_statement { })) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (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 IDENT & LIT) )) != LIT) )) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & 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) )))) & LIT) )) != LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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 IDENT + LIT) )))) & 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) )))) & 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) )))) & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (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 (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + 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 = (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (pointer_expression * IDENT) == LIT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) ))) )) && (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 (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , (pointer_expression * IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) )))) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT) && (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) == LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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) ) IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & 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 (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression ! IDENT)) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) != LIT) || (binary_expression (parenthesized_expression ( (binary_expression IDENT & IDENT) )) != LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & 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) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) < LIT) )) && (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_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) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (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 (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (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 IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (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) + LIT) )))) - 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 = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (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) & LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (goto_statement goto statement_identifier ;) })) })))) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (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 == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (subscript_expression IDENT [ IDENT ])) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression LIT << IDENT) | (binary_expression LIT >> (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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (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 IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (subscript_expression IDENT [ IDENT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (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 (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | IDENT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT) )))) == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (break_statement break ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (subscript_expression IDENT [ LIT ])) ))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) }))) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })))
(function_definition "int * FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)\n\n{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" (primitive_type "int") (pointer_declarator "* FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" (* "*") (function_declarator "FUN_0009fb70(int *param_1,int *param_2,ushort param_3,int param_4)" (identifier "FUN_0009fb70") (parameter_list "(int *param_1,int *param_2,ushort param_3,int param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "ushort param_3" (type_identifier "ushort") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")")))) (compound_statement "{\n  byte *pbVar1;\n  short sVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  ushort uVar6;\n  char cVar7;\n  byte bVar8;\n  undefined2 uVar9;\n  int *piVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  int iVar14;\n  undefined4 uVar15;\n  int iVar16;\n  int *piVar17;\n  uint uVar18;\n  undefined4 *puVar19;\n  undefined *puVar20;\n  char *pcVar21;\n  undefined4 *puVar22;\n  int *piVar23;\n  undefined1 uVar24;\n  int extraout_ECX;\n  uint uVar25;\n  uint uVar26;\n  uint uVar27;\n  int iVar28;\n  ushort uVar29;\n  int *piVar30;\n  uint uVar31;\n  int *piVar32;\n  uint uVar33;\n  int *piVar34;\n  int *piVar35;\n  undefined2 *puVar36;\n  int iVar37;\n  int unaff_EDI;\n  int iVar38;\n  int in_GS_OFFSET;\n  bool bVar39;\n  undefined8 uVar40;\n  ulonglong uVar41;\n  ulonglong uVar42;\n  uint uVar43;\n  uint local_d8;\n  int *local_d0;\n  uint local_cc;\n  uint local_c8;\n  int local_c0;\n  uint local_bc;\n  int *local_b8;\n  int *local_b4;\n  uint local_a8;\n  int local_a0;\n  int local_88;\n  undefined *local_84;\n  uint local_78;\n  int local_74;\n  undefined2 local_70;\n  int *local_58 [3];\n  int local_4c;\n  int local_40;\n  int local_3c [5];\n  char local_28;\n  int local_24;\n  int local_20;\n  \n  uVar40 = FUN_0001af1a();\n  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);\n  piVar10 = (int *)uVar40;\n  local_b4 = param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = piVar10[2];\n  iVar4 = *piVar10;\n  uVar11 = 0;\n  do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);\n  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }\n  local_58[2] = local_b4;\n  uVar29 = param_3 & 0xfeff;\n  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }\n  local_a0 = *piVar30;\n  if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }\n  uVar6 = uVar29 & 0x20;\n  if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }\n  if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }\n  local_d0 = (int *)0x0;\nLAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_d0;\nLAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);\n  if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }\nLAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n  uVar11 = uVar11 + 1;\n  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;\n  goto LAB_000a132f;\nLAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;\nLAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);\n  if (iVar38 == 0) goto LAB_000a1530;\n  goto LAB_000a12fb;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "short sVar2;" (sized_type_specifier "short" (short "short")) (identifier "sVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "ushort uVar6;" (type_identifier "ushort") (identifier "uVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (declaration "undefined2 uVar9;" (type_identifier "undefined2") (identifier "uVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "undefined4 *puVar19;" (type_identifier "undefined4") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined *puVar20;" (type_identifier "undefined") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "char *pcVar21;" (primitive_type "char") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "undefined4 *puVar22;" (type_identifier "undefined4") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "undefined1 uVar24;" (type_identifier "undefined1") (identifier "uVar24") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "uint uVar27;" (type_identifier "uint") (identifier "uVar27") (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "ushort uVar29;" (type_identifier "ushort") (identifier "uVar29") (; ";")) (declaration "int *piVar30;" (primitive_type "int") (pointer_declarator "*piVar30" (* "*") (identifier "piVar30")) (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "int *piVar32;" (primitive_type "int") (pointer_declarator "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (declaration "uint uVar33;" (type_identifier "uint") (identifier "uVar33") (; ";")) (declaration "int *piVar34;" (primitive_type "int") (pointer_declarator "*piVar34" (* "*") (identifier "piVar34")) (; ";")) (declaration "int *piVar35;" (primitive_type "int") (pointer_declarator "*piVar35" (* "*") (identifier "piVar35")) (; ";")) (declaration "undefined2 *puVar36;" (type_identifier "undefined2") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "int iVar37;" (primitive_type "int") (identifier "iVar37") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int iVar38;" (primitive_type "int") (identifier "iVar38") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar39;" (primitive_type "bool") (identifier "bVar39") (; ";")) (declaration "undefined8 uVar40;" (type_identifier "undefined8") (identifier "uVar40") (; ";")) (declaration "ulonglong uVar41;" (type_identifier "ulonglong") (identifier "uVar41") (; ";")) (declaration "ulonglong uVar42;" (type_identifier "ulonglong") (identifier "uVar42") (; ";")) (declaration "uint uVar43;" (type_identifier "uint") (identifier "uVar43") (; ";")) (declaration "uint local_d8;" (type_identifier "uint") (identifier "local_d8") (; ";")) (declaration "int *local_d0;" (primitive_type "int") (pointer_declarator "*local_d0" (* "*") (identifier "local_d0")) (; ";")) (declaration "uint local_cc;" (type_identifier "uint") (identifier "local_cc") (; ";")) (declaration "uint local_c8;" (type_identifier "uint") (identifier "local_c8") (; ";")) (declaration "int local_c0;" (primitive_type "int") (identifier "local_c0") (; ";")) (declaration "uint local_bc;" (type_identifier "uint") (identifier "local_bc") (; ";")) (declaration "int *local_b8;" (primitive_type "int") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "int *local_b4;" (primitive_type "int") (pointer_declarator "*local_b4" (* "*") (identifier "local_b4")) (; ";")) (declaration "uint local_a8;" (type_identifier "uint") (identifier "local_a8") (; ";")) (declaration "int local_a0;" (primitive_type "int") (identifier "local_a0") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "undefined *local_84;" (type_identifier "undefined") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "undefined2 local_70;" (type_identifier "undefined2") (identifier "local_70") (; ";")) (declaration "int *local_58 [3];" (primitive_type "int") (pointer_declarator "*local_58 [3]" (* "*") (array_declarator "local_58 [3]" (identifier "local_58") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c [5];" (primitive_type "int") (array_declarator "local_3c [5]" (identifier "local_3c") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "char local_28;" (primitive_type "char") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar40 = FUN_0001af1a();" (assignment_expression "uVar40 = FUN_0001af1a()" (identifier "uVar40") (= "=") (call_expression "FUN_0001af1a()" (identifier "FUN_0001af1a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar30 = (int *)((ulonglong)uVar40 >> 0x20);" (assignment_expression "piVar30 = (int *)((ulonglong)uVar40 >> 0x20)" (identifier "piVar30") (= "=") (cast_expression "(int *)((ulonglong)uVar40 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar40 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar40 >> 0x20" (cast_expression "(ulonglong)uVar40" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar40")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "piVar10 = (int *)uVar40;" (assignment_expression "piVar10 = (int *)uVar40" (identifier "piVar10") (= "=") (cast_expression "(int *)uVar40" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar40"))) (; ";")) (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" (identifier "local_b4") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar3 = piVar10[2];" (assignment_expression "iVar3 = piVar10[2]" (identifier "iVar3") (= "=") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar4 = *piVar10;" (assignment_expression "iVar4 = *piVar10" (identifier "iVar4") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  } while (uVar11 < 0x1c);" (do "do") (compound_statement "{\n    *(undefined4 *)((int)local_58 + uVar11) = 0;\n    uVar11 = uVar11 + 4;\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)local_58 + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_58 + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_58 + uVar11)" (* "*") (cast_expression "(undefined4 *)((int)local_58 + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_58 + uVar11)" (( "(") (binary_expression "(int)local_58 + uVar11" (cast_expression "(int)local_58" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_58")) (+ "+") (identifier "uVar11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 4" (identifier "uVar11") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < 0x1c)" (( "(") (binary_expression "uVar11 < 0x1c" (identifier "uVar11") (< "<") (number_literal "0x1c")) () ")")) (; ";")) (if_statement "if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {\n    local_b4 = param_1;\n  }" (if "if") (parenthesized_expression "((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40))" (( "(") (binary_expression "(param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)" (parenthesized_expression "(param_1 != (int *)0x0)" (( "(") (binary_expression "param_1 != (int *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_b4 = (int *)0x0, *param_1 < 0x40)" (( "(") (comma_expression "local_b4 = (int *)0x0, *param_1 < 0x40" (assignment_expression "local_b4 = (int *)0x0" (identifier "local_b4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (, ",") (binary_expression "*param_1 < 0x40" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (< "<") (number_literal "0x40"))) () ")"))) () ")")) (compound_statement "{\n    local_b4 = param_1;\n  }" ({ "{") (expression_statement "local_b4 = param_1;" (assignment_expression "local_b4 = param_1" (identifier "local_b4") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "local_58[2] = local_b4;" (assignment_expression "local_58[2] = local_b4" (subscript_expression "local_58[2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_b4")) (; ";")) (expression_statement "uVar29 = param_3 & 0xfeff;" (assignment_expression "uVar29 = param_3 & 0xfeff" (identifier "uVar29") (= "=") (binary_expression "param_3 & 0xfeff" (identifier "param_3") (& "&") (number_literal "0xfeff"))) (; ";")) (if_statement "if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {\n    uVar29 = param_3;\n  }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x48) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x48) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x48) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x48) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x48)" (* "*") (cast_expression "(byte *)(iVar4 + 0x48)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x48)" (( "(") (binary_expression "iVar4 + 0x48" (identifier "iVar4") (+ "+") (number_literal "0x48")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar29 = param_3;\n  }" ({ "{") (expression_statement "uVar29 = param_3;" (assignment_expression "uVar29 = param_3" (identifier "uVar29") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (expression_statement "local_a0 = *piVar30;" (assignment_expression "local_a0 = *piVar30" (identifier "local_a0") (= "=") (pointer_expression "*piVar30" (* "*") (identifier "piVar30"))) (; ";")) (if_statement "if (0x40 < local_a0) {\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" (if "if") (parenthesized_expression "(0x40 < local_a0)" (( "(") (binary_expression "0x40 < local_a0" (number_literal "0x40") (< "<") (identifier "local_a0")) () ")")) (compound_statement "{\n    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);\n    local_d0 = (int *)0x0;\n    goto LAB_000a0bf2;\n  }" ({ "{") (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40)" (identifier "FUN_000590d0") (argument_list "(piVar10,unaff_EDI + 0x59c10,0x40)" (( "(") (identifier "piVar10") (, ",") (binary_expression "unaff_EDI + 0x59c10" (identifier "unaff_EDI") (+ "+") (number_literal "0x59c10")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" (identifier "local_d0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_000a0bf2;" (goto "goto") (statement_identifier "LAB_000a0bf2") (; ";")) (} "}"))) (expression_statement "uVar6 = uVar29 & 0x20;" (assignment_expression "uVar6 = uVar29 & 0x20" (identifier "uVar6") (= "=") (binary_expression "uVar29 & 0x20" (identifier "uVar29") (& "&") (number_literal "0x20"))) (; ";")) (if_statement "if ((uVar29 & 0x20) == 0) {\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }\n  else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" (if "if") (parenthesized_expression "((uVar29 & 0x20) == 0)" (( "(") (binary_expression "(uVar29 & 0x20) == 0" (parenthesized_expression "(uVar29 & 0x20)" (( "(") (binary_expression "uVar29 & 0x20" (identifier "uVar29") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;\n  }" ({ "{") (expression_statement "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;" (assignment_expression "uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" (identifier "uVar11") (= "=") (binary_expression "(local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8" (binary_expression "(local_a0 + -1) * 0x44 + 0x337U" (binary_expression "(local_a0 + -1) * 0x44" (parenthesized_expression "(local_a0 + -1)" (( "(") (binary_expression "local_a0 + -1" (identifier "local_a0") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "0x44")) (+ "+") (number_literal "0x337U")) (& "&") (number_literal "0xfffffff8"))) (; ";")) (} "}")) (else_clause "else {\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" (else "else") (compound_statement "{\n    uVar11 = 0x330;\n    local_a0 = 1;\n  }" ({ "{") (expression_statement "uVar11 = 0x330;" (assignment_expression "uVar11 = 0x330" (identifier "uVar11") (= "=") (number_literal "0x330")) (; ";")) (expression_statement "local_a0 = 1;" (assignment_expression "local_a0 = 1" (identifier "local_a0") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_d0 = (int *)FUN_000283a0();\n    if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }\n  }" ({ "{") (expression_statement "local_d0 = (int *)FUN_000283a0();" (assignment_expression "local_d0 = (int *)FUN_000283a0()" (identifier "local_d0") (= "=") (cast_expression "(int *)FUN_000283a0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000283a0()" (identifier "FUN_000283a0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }\n    else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(undefined8 *)local_d0 = uVar40;\n      local_d0[2] = (int)local_b4;\n      local_d0[3] = (int)param_2;\n      local_d0[4] = extraout_ECX;\n      local_d0[7] = -1;\n      local_d0[6] = -1;\n      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;\n      iVar12 = piVar10[0xe] + -1;\n      piVar10[0xe] = iVar12;\n      local_d0[8] = iVar12;\n      local_d0[9] = iVar12;\n      *(ushort *)(local_d0 + 0xb) = uVar29;\n      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;\n      local_d0[10] = piVar10[0x20];\n      *(undefined4 *)((int)local_d0 + 0x2f) = 0;\n      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;\n      local_d0[0x12] = 0;\n      uVar13 = 0;\n      do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));\n      local_b8 = local_d0 + 0xbb;\n      iVar12 = uVar11 + (int)local_d0;\n      memset(local_b8,0,(local_a0 + 1) * 0x44);\n      local_58[1] = local_d0 + 0x13;\n      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;\n      *(undefined2 *)(iVar12 + 0x28) = 0;\n      *(undefined2 *)(iVar12 + 0x2c) = 3;\n      *(undefined4 *)(iVar12 + 0x24) = 0;\n      local_d0[0x18] = (int)(local_d0 + 0x19);\n      local_d0[0x7a] = 0;\n      local_d0[0x13] = (int)local_d0;\n      *(undefined1 *)((int)local_d0 + 0x55) = 0;\n      local_d0[0x14] = 0;\n      local_d0[0x16] = 0;\n      local_d0[0x17] = 8;\n      local_58[0] = local_d0;\n      local_4c = iVar12;\n      FUN_0003ab70();\n      if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }\n      iVar12 = local_d0[0x16];\n      iVar38 = iVar12 + -1;\n      if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }\n      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));\n      if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }\nLAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];\n      FUN_0003a3b0();\n    }" ({ "{") (expression_statement "*(undefined8 *)local_d0 = uVar40;" (assignment_expression "*(undefined8 *)local_d0 = uVar40" (pointer_expression "*(undefined8 *)local_d0" (* "*") (cast_expression "(undefined8 *)local_d0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_d0"))) (= "=") (identifier "uVar40")) (; ";")) (expression_statement "local_d0[2] = (int)local_b4;" (assignment_expression "local_d0[2] = (int)local_b4" (subscript_expression "local_d0[2]" (identifier "local_d0") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)local_b4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b4"))) (; ";")) (expression_statement "local_d0[3] = (int)param_2;" (assignment_expression "local_d0[3] = (int)param_2" (subscript_expression "local_d0[3]" (identifier "local_d0") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (expression_statement "local_d0[4] = extraout_ECX;" (assignment_expression "local_d0[4] = extraout_ECX" (subscript_expression "local_d0[4]" (identifier "local_d0") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "extraout_ECX")) (; ";")) (expression_statement "local_d0[7] = -1;" (assignment_expression "local_d0[7] = -1" (subscript_expression "local_d0[7]" (identifier "local_d0") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_d0[6] = -1;" (assignment_expression "local_d0[6] = -1" (subscript_expression "local_d0[6]" (identifier "local_d0") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(undefined1 *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")")))) (= "=") (cast_expression "(undefined1)local_a0" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (identifier "local_a0"))) (; ";")) (expression_statement "iVar12 = piVar10[0xe] + -1;" (assignment_expression "iVar12 = piVar10[0xe] + -1" (identifier "iVar12") (= "=") (binary_expression "piVar10[0xe] + -1" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10[0xe] = iVar12;" (assignment_expression "piVar10[0xe] = iVar12" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "local_d0[8] = iVar12;" (assignment_expression "local_d0[8] = iVar12" (subscript_expression "local_d0[8]" (identifier "local_d0") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "local_d0[9] = iVar12;" (assignment_expression "local_d0[9] = iVar12" (subscript_expression "local_d0[9]" (identifier "local_d0") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "*(ushort *)(local_d0 + 0xb) = uVar29;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = uVar29" (pointer_expression "*(ushort *)(local_d0 + 0xb)" (* "*") (cast_expression "(ushort *)(local_d0 + 0xb)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 0xb)" (( "(") (binary_expression "local_d0 + 0xb" (identifier "local_d0") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (identifier "uVar29")) (; ";")) (expression_statement "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4;" (assignment_expression "*(undefined2 *)(local_d0 + 5) = (undefined2)param_4" (pointer_expression "*(undefined2 *)(local_d0 + 5)" (* "*") (cast_expression "(undefined2 *)(local_d0 + 5)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 5)" (( "(") (binary_expression "local_d0 + 5" (identifier "local_d0") (+ "+") (number_literal "5")) () ")")))) (= "=") (cast_expression "(undefined2)param_4" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "local_d0[10] = piVar10[0x20];" (assignment_expression "local_d0[10] = piVar10[0x20]" (subscript_expression "local_d0[10]" (identifier "local_d0") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "piVar10[0x20]" (identifier "piVar10") ([ "[") (number_literal "0x20") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((int)local_d0 + 0x2f) = 0;" (assignment_expression "*(undefined4 *)((int)local_d0 + 0x2f) = 0" (pointer_expression "*(undefined4 *)((int)local_d0 + 0x2f)" (* "*") (cast_expression "(undefined4 *)((int)local_d0 + 0x2f)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2f)" (( "(") (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2f")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;" (assignment_expression "uVar25 = (int)local_d0 + 0x33U & 0xfffffffc" (identifier "uVar25") (= "=") (binary_expression "(int)local_d0 + 0x33U & 0xfffffffc" (binary_expression "(int)local_d0 + 0x33U" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x33U")) (& "&") (number_literal "0xfffffffc"))) (; ";")) (expression_statement "local_d0[0x12] = 0;" (assignment_expression "local_d0[0x12] = 0" (subscript_expression "local_d0[0x12]" (identifier "local_d0") ([ "[") (number_literal "0x12") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));" (do "do") (compound_statement "{\n        *(undefined4 *)(uVar25 + uVar13) = 0;\n        uVar13 = uVar13 + 4;\n      }" ({ "{") (expression_statement "*(undefined4 *)(uVar25 + uVar13) = 0;" (assignment_expression "*(undefined4 *)(uVar25 + uVar13) = 0" (pointer_expression "*(undefined4 *)(uVar25 + uVar13)" (* "*") (cast_expression "(undefined4 *)(uVar25 + uVar13)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 + uVar13)" (( "(") (binary_expression "uVar25 + uVar13" (identifier "uVar25") (+ "+") (identifier "uVar13")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar13 = uVar13 + 4;" (assignment_expression "uVar13 = uVar13 + 4" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 4" (identifier "uVar13") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc))" (( "(") (binary_expression "uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" (identifier "uVar13") (< "<") (parenthesized_expression "((int)local_d0 + (0x4c - uVar25) & 0xfffffffc)" (( "(") (binary_expression "(int)local_d0 + (0x4c - uVar25) & 0xfffffffc" (binary_expression "(int)local_d0 + (0x4c - uVar25)" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (parenthesized_expression "(0x4c - uVar25)" (( "(") (binary_expression "0x4c - uVar25" (number_literal "0x4c") (- "-") (identifier "uVar25")) () ")"))) (& "&") (number_literal "0xfffffffc")) () ")"))) () ")")) (; ";")) (expression_statement "local_b8 = local_d0 + 0xbb;" (assignment_expression "local_b8 = local_d0 + 0xbb" (identifier "local_b8") (= "=") (binary_expression "local_d0 + 0xbb" (identifier "local_d0") (+ "+") (number_literal "0xbb"))) (; ";")) (expression_statement "iVar12 = uVar11 + (int)local_d0;" (assignment_expression "iVar12 = uVar11 + (int)local_d0" (identifier "iVar12") (= "=") (binary_expression "uVar11 + (int)local_d0" (identifier "uVar11") (+ "+") (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")))) (; ";")) (expression_statement "memset(local_b8,0,(local_a0 + 1) * 0x44);" (call_expression "memset(local_b8,0,(local_a0 + 1) * 0x44)" (identifier "memset") (argument_list "(local_b8,0,(local_a0 + 1) * 0x44)" (( "(") (identifier "local_b8") (, ",") (number_literal "0") (, ",") (binary_expression "(local_a0 + 1) * 0x44" (parenthesized_expression "(local_a0 + 1)" (( "(") (binary_expression "local_a0 + 1" (identifier "local_a0") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x44")) () ")"))) (; ";")) (expression_statement "local_58[1] = local_d0 + 0x13;" (assignment_expression "local_58[1] = local_d0 + 0x13" (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_d0 + 0x13" (identifier "local_d0") (+ "+") (number_literal "0x13"))) (; ";")) (expression_statement "*(int *)(iVar12 + 0x30) = iVar12 + 0x38;" (assignment_expression "*(int *)(iVar12 + 0x30) = iVar12 + 0x38" (pointer_expression "*(int *)(iVar12 + 0x30)" (* "*") (cast_expression "(int *)(iVar12 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x30)" (( "(") (binary_expression "iVar12 + 0x30" (identifier "iVar12") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "iVar12 + 0x38" (identifier "iVar12") (+ "+") (number_literal "0x38"))) (; ";")) (expression_statement "*(undefined2 *)(iVar12 + 0x28) = 0;" (assignment_expression "*(undefined2 *)(iVar12 + 0x28) = 0" (pointer_expression "*(undefined2 *)(iVar12 + 0x28)" (* "*") (cast_expression "(undefined2 *)(iVar12 + 0x28)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(iVar12 + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(iVar12 + 0x2c) = 3" (pointer_expression "*(undefined2 *)(iVar12 + 0x2c)" (* "*") (cast_expression "(undefined2 *)(iVar12 + 0x2c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x2c)" (( "(") (binary_expression "iVar12 + 0x2c" (identifier "iVar12") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*(undefined4 *)(iVar12 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(iVar12 + 0x24) = 0" (pointer_expression "*(undefined4 *)(iVar12 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar12 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x24)" (( "(") (binary_expression "iVar12 + 0x24" (identifier "iVar12") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x18] = (int)(local_d0 + 0x19);" (assignment_expression "local_d0[0x18] = (int)(local_d0 + 0x19)" (subscript_expression "local_d0[0x18]" (identifier "local_d0") ([ "[") (number_literal "0x18") (] "]")) (= "=") (cast_expression "(int)(local_d0 + 0x19)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_d0 + 0x19)" (( "(") (binary_expression "local_d0 + 0x19" (identifier "local_d0") (+ "+") (number_literal "0x19")) () ")")))) (; ";")) (expression_statement "local_d0[0x7a] = 0;" (assignment_expression "local_d0[0x7a] = 0" (subscript_expression "local_d0[0x7a]" (identifier "local_d0") ([ "[") (number_literal "0x7a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x13] = (int)local_d0;" (assignment_expression "local_d0[0x13] = (int)local_d0" (subscript_expression "local_d0[0x13]" (identifier "local_d0") ([ "[") (number_literal "0x13") (] "]")) (= "=") (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0"))) (; ";")) (expression_statement "*(undefined1 *)((int)local_d0 + 0x55) = 0;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x55) = 0" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x55)" (* "*") (cast_expression "(undefined1 *)((int)local_d0 + 0x55)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x55)" (( "(") (binary_expression "(int)local_d0 + 0x55" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x55")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x14] = 0;" (assignment_expression "local_d0[0x14] = 0" (subscript_expression "local_d0[0x14]" (identifier "local_d0") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x16] = 0;" (assignment_expression "local_d0[0x16] = 0" (subscript_expression "local_d0[0x16]" (identifier "local_d0") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d0[0x17] = 8;" (assignment_expression "local_d0[0x17] = 8" (subscript_expression "local_d0[0x17]" (identifier "local_d0") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "local_58[0] = local_d0;" (assignment_expression "local_58[0] = local_d0" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_d0")) (; ";")) (expression_statement "local_4c = iVar12;" (assignment_expression "local_4c = iVar12" (identifier "local_4c") (= "=") (identifier "iVar12")) (; ";")) (expression_statement "FUN_0003ab70();" (call_expression "FUN_0003ab70()" (identifier "FUN_0003ab70") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_a0 == 0) {\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }\n      else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" (if "if") (parenthesized_expression "(local_a0 == 0)" (( "(") (binary_expression "local_a0 == 0" (identifier "local_a0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }\n        if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }\n        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);\n      }" ({ "{") (if_statement "if (local_b4 != (int *)0x0) {\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" (if "if") (parenthesized_expression "(local_b4 != (int *)0x0)" (( "(") (binary_expression "local_b4 != (int *)0x0" (identifier "local_b4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;\n        }" ({ "{") (expression_statement "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4;" (assignment_expression "*(char *)((int)local_d0 + 0x2f) = (char)*local_b4" (pointer_expression "*(char *)((int)local_d0 + 0x2f)" (* "*") (cast_expression "(char *)((int)local_d0 + 0x2f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2f)" (( "(") (binary_expression "(int)local_d0 + 0x2f" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2f")) () ")")))) (= "=") (cast_expression "(char)*local_b4" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*local_b4" (* "*") (identifier "local_b4")))) (; ";")) (} "}"))) (if_statement "if ((uVar29 & 0x100) != 0) {\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" (if "if") (parenthesized_expression "((uVar29 & 0x100) != 0)" (( "(") (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" (( "(") (binary_expression "uVar29 & 0x100" (identifier "uVar29") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined1 *)((int)local_d0 + 0x33) = 1;\n        }" ({ "{") (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" (* "*") (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x33)" (( "(") (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x33")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);" (call_expression "FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c)" (identifier "FUN_00065d00") (argument_list "(piVar10,0,unaff_EDI + 0x59c2c)" (( "(") (identifier "piVar10") (, ",") (number_literal "0") (, ",") (binary_expression "unaff_EDI + 0x59c2c" (identifier "unaff_EDI") (+ "+") (number_literal "0x59c2c")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" (else "else") (compound_statement "{\n        local_bc = 0;\n        piVar17 = piVar30 + 6;\n        do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);\n      }" ({ "{") (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17 = piVar30 + 6;" (assignment_expression "piVar17 = piVar30 + 6" (identifier "piVar17") (= "=") (binary_expression "piVar30 + 6" (identifier "piVar30") (+ "+") (number_literal "6"))) (; ";")) (do_statement "do {\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        } while ((int)local_bc < *piVar30);" (do "do") (compound_statement "{\n          iVar12 = piVar17[6];\n          iVar38 = local_d0[0x7a];\n          local_d0[0x7a] = iVar38 + 1;\n          local_d0[iVar38 + 0x7b] = iVar12;\n          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }\n          local_bc = local_bc + 1;\n          piVar17 = piVar17 + 0x11;\n        }" ({ "{") (expression_statement "iVar12 = piVar17[6];" (assignment_expression "iVar12 = piVar17[6]" (identifier "iVar12") (= "=") (subscript_expression "piVar17[6]" (identifier "piVar17") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar38 = local_d0[0x7a];" (assignment_expression "iVar38 = local_d0[0x7a]" (identifier "iVar38") (= "=") (subscript_expression "local_d0[0x7a]" (identifier "local_d0") ([ "[") (number_literal "0x7a") (] "]"))) (; ";")) (expression_statement "local_d0[0x7a] = iVar38 + 1;" (assignment_expression "local_d0[0x7a] = iVar38 + 1" (subscript_expression "local_d0[0x7a]" (identifier "local_d0") ([ "[") (number_literal "0x7a") (] "]")) (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_d0[iVar38 + 0x7b] = iVar12;" (assignment_expression "local_d0[iVar38 + 0x7b] = iVar12" (subscript_expression "local_d0[iVar38 + 0x7b]" (identifier "local_d0") ([ "[") (binary_expression "iVar38 + 0x7b" (identifier "iVar38") (+ "+") (number_literal "0x7b")) (] "]")) (= "=") (identifier "iVar12")) (; ";")) (if_statement "if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" (if "if") (parenthesized_expression "((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34))" (( "(") (binary_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)" (parenthesized_expression "(((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0))" (( "(") (binary_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&\n              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" (parenthesized_expression "((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4)" (( "(") (binary_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4" (pointer_expression "*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar30 + local_bc * 0x44 + 0x2d)" (( "(") (binary_expression "(int)piVar30 + local_bc * 0x44 + 0x2d" (binary_expression "(int)piVar30 + local_bc * 0x44" (cast_expression "(int)piVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar30")) (+ "+") (binary_expression "local_bc * 0x44" (identifier "local_bc") (* "*") (number_literal "0x44"))) (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)" (( "(") (comma_expression "piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0" (assignment_expression "piVar34 = (int *)piVar17[0xb]" (identifier "piVar34") (= "=") (cast_expression "(int *)piVar17[0xb]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar17[0xb]" (identifier "piVar17") ([ "[") (number_literal "0xb") (] "]")))) (, ",") (binary_expression "piVar34 != (int *)0x0" (identifier "piVar34") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(0 < *piVar34)" (( "(") (binary_expression "0 < *piVar34" (number_literal "0") (< "<") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) () ")"))) () ")")) (compound_statement "{\n            puVar22 = (undefined4 *)*piVar17;\n            iVar12 = 0;\n            iVar38 = 0;\n            do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);\n          }" ({ "{") (expression_statement "puVar22 = (undefined4 *)*piVar17;" (assignment_expression "puVar22 = (undefined4 *)*piVar17" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)*piVar17" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" (identifier "iVar38") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            } while (iVar38 < *piVar34);" (do "do") (compound_statement "{\n              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }\n              iVar16 = iVar12;\n              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }\n              iVar14 = FUN_00028ce0(0);\n              if (iVar14 == 0) break;\n              iVar12 = iVar16 + 1;\n              *(int *)(iVar14 + 0x1c) = piVar17[6];\n              *(int *)(iVar14 + 0x20) = iVar16;\n              *(undefined4 **)(iVar14 + 0x30) = puVar22;\n              if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }\n              iVar38 = iVar38 + 1;\n              uVar15 = FUN_00059ec0(0);\n              FUN_00059ec0(uVar15);\n              FUN_0003a8b0();\n            }" ({ "{") (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" (if "if") (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar12)" (( "(") (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar12" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")")))) (<= "<=") (identifier "iVar12")) () ")")) (compound_statement "{\nLAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);\n                break;\n              }" ({ "{") (labeled_statement "LAB_000a0e38:\n                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" (statement_identifier "LAB_000a0e38") (: ":") (expression_statement "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);" (call_expression "FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" (identifier "FUN_000590d0") (argument_list "(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38)" (( "(") (identifier "piVar10") (, ",") (binary_expression "unaff_EDI + 0x6623d" (identifier "unaff_EDI") (+ "+") (number_literal "0x6623d")) (, ",") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (, ",") (identifier "iVar38") () ")"))) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar16 = iVar12;" (assignment_expression "iVar16 = iVar12" (identifier "iVar16") (= "=") (identifier "iVar12")) (; ";")) (while_statement "while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\n              }" (while "while") (parenthesized_expression "((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2)" (( "(") (binary_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2" (pointer_expression "*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" (* "*") (cast_expression "(byte *)(puVar22[1] + 0xf + iVar16 * 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22[1] + 0xf + iVar16 * 0x10)" (( "(") (binary_expression "puVar22[1] + 0xf + iVar16 * 0x10" (binary_expression "puVar22[1] + 0xf" (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xf")) (+ "+") (binary_expression "iVar16 * 0x10" (identifier "iVar16") (* "*") (number_literal "0x10"))) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar16 = iVar16 + 1;\n                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;\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 (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;" (if "if") (parenthesized_expression "(iVar16 == *(short *)((int)puVar22 + 0x2a))" (( "(") (binary_expression "iVar16 == *(short *)((int)puVar22 + 0x2a)" (identifier "iVar16") (== "==") (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (goto_statement "goto LAB_000a0e38;" (goto "goto") (statement_identifier "LAB_000a0e38") (; ";"))) (} "}"))) (expression_statement "iVar14 = FUN_00028ce0(0);" (assignment_expression "iVar14 = FUN_00028ce0(0)" (identifier "iVar14") (= "=") (call_expression "FUN_00028ce0(0)" (identifier "FUN_00028ce0") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar12 = iVar16 + 1;" (assignment_expression "iVar12 = iVar16 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(iVar14 + 0x1c) = piVar17[6];" (assignment_expression "*(int *)(iVar14 + 0x1c) = piVar17[6]" (pointer_expression "*(int *)(iVar14 + 0x1c)" (* "*") (cast_expression "(int *)(iVar14 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x1c)" (( "(") (binary_expression "iVar14 + 0x1c" (identifier "iVar14") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (subscript_expression "piVar17[6]" (identifier "piVar17") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "*(int *)(iVar14 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar14 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar14 + 0x20)" (* "*") (cast_expression "(int *)(iVar14 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x20)" (( "(") (binary_expression "iVar14 + 0x20" (identifier "iVar14") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "*(undefined4 **)(iVar14 + 0x30) = puVar22;" (assignment_expression "*(undefined4 **)(iVar14 + 0x30) = puVar22" (pointer_expression "*(undefined4 **)(iVar14 + 0x30)" (* "*") (cast_expression "(undefined4 **)(iVar14 + 0x30)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar14 + 0x30)" (( "(") (binary_expression "iVar14 + 0x30" (identifier "iVar14") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "puVar22")) (; ";")) (if_statement "if (piVar34[iVar38 * 5 + 1] != 0) {\n                FUN_0003dcd0(0);\n              }" (if "if") (parenthesized_expression "(piVar34[iVar38 * 5 + 1] != 0)" (( "(") (binary_expression "piVar34[iVar38 * 5 + 1] != 0" (subscript_expression "piVar34[iVar38 * 5 + 1]" (identifier "piVar34") ([ "[") (binary_expression "iVar38 * 5 + 1" (binary_expression "iVar38 * 5" (identifier "iVar38") (* "*") (number_literal "5")) (+ "+") (number_literal "1")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0003dcd0(0);\n              }" ({ "{") (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" (identifier "FUN_0003dcd0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = FUN_00059ec0(0);" (assignment_expression "uVar15 = FUN_00059ec0(0)" (identifier "uVar15") (= "=") (call_expression "FUN_00059ec0(0)" (identifier "FUN_00059ec0") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_00059ec0(uVar15);" (call_expression "FUN_00059ec0(uVar15)" (identifier "FUN_00059ec0") (argument_list "(uVar15)" (( "(") (identifier "uVar15") () ")"))) (; ";")) (expression_statement "FUN_0003a8b0();" (call_expression "FUN_0003a8b0()" (identifier "FUN_0003a8b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar38 < *piVar34)" (( "(") (binary_expression "iVar38 < *piVar34" (identifier "iVar38") (< "<") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_bc = local_bc + 1;" (assignment_expression "local_bc = local_bc + 1" (identifier "local_bc") (= "=") (binary_expression "local_bc + 1" (identifier "local_bc") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 0x11" (identifier "piVar17") (+ "+") (number_literal "0x11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)local_bc < *piVar30)" (( "(") (binary_expression "(int)local_bc < *piVar30" (cast_expression "(int)local_bc" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_bc")) (< "<") (pointer_expression "*piVar30" (* "*") (identifier "piVar30"))) () ")")) (; ";")) (} "}")))) (expression_statement "iVar12 = local_d0[0x16];" (assignment_expression "iVar12 = local_d0[0x16]" (identifier "iVar12") (= "=") (subscript_expression "local_d0[0x16]" (identifier "local_d0") ([ "[") (number_literal "0x16") (] "]"))) (; ";")) (expression_statement "iVar38 = iVar12 + -1;" (assignment_expression "iVar38 = iVar12 + -1" (identifier "iVar38") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < iVar38) {\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" (if "if") (parenthesized_expression "(-1 < iVar38)" (( "(") (binary_expression "-1 < iVar38" (number_literal "-1") (< "<") (identifier "iVar38")) () ")")) (compound_statement "{\n        do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);\n      }" ({ "{") (do_statement "do {\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        } while (iVar38 != -1);" (do "do") (compound_statement "{\n          iVar38 = iVar38 + -1;\n          FUN_0009a5f0(iVar12);\n        }" ({ "{") (expression_statement "iVar38 = iVar38 + -1;" (assignment_expression "iVar38 = iVar38 + -1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + -1" (identifier "iVar38") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_0009a5f0(iVar12);" (call_expression "FUN_0009a5f0(iVar12)" (identifier "FUN_0009a5f0") (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar38 != -1)" (( "(") (binary_expression "iVar38 != -1" (identifier "iVar38") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));" (assignment_expression "uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" (identifier "uVar15") (= "=") (call_expression "CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" (identifier "CONCAT31") (argument_list "((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d))" (( "(") (call_expression "(int3)((uint)iVar12 >> 8)" (parenthesized_expression "(int3)" (( "(") (identifier "int3") () ")")) (argument_list "((uint)iVar12 >> 8)" (( "(") (binary_expression "(uint)iVar12 >> 8" (cast_expression "(uint)iVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "iVar12")) (>> ">>") (number_literal "8")) () ")"))) (, ",") (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) () ")")))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }\n        if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }\nLAB_000a0050:\n        iVar38 = local_4c;\n        piVar17 = local_58[0];\n        uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n        iVar12 = local_58[0][1];\n        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }\n      }" ({ "{") (if_statement "if (0 < local_58[1][3]) {\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" (if "if") (parenthesized_expression "(0 < local_58[1][3])" (( "(") (binary_expression "0 < local_58[1][3]" (number_literal "0") (< "<") (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]")) ([ "[") (number_literal "3") (] "]"))) () ")")) (compound_statement "{\n          iVar12 = 0;\n          piVar17 = local_58[1];\n          do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);\n        }" ({ "{") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" (identifier "piVar17") (= "=") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]"))) (; ";")) (do_statement "do {\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          } while (iVar12 < piVar17[3]);" (do "do") (compound_statement "{\n            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);\n            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }\nLAB_000a0030:\n            iVar12 = iVar12 + 1;\n          }" ({ "{") (expression_statement "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);" (assignment_expression "piVar34 = (int *)(iVar12 * 0x30 + piVar17[5])" (identifier "piVar34") (= "=") (cast_expression "(int *)(iVar12 * 0x30 + piVar17[5])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 * 0x30 + piVar17[5])" (( "(") (binary_expression "iVar12 * 0x30 + piVar17[5]" (binary_expression "iVar12 * 0x30" (identifier "iVar12") (* "*") (number_literal "0x30")) (+ "+") (subscript_expression "piVar17[5]" (identifier "piVar17") ([ "[") (number_literal "5") (] "]"))) () ")")))) (; ";")) (if_statement "if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               ) {\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" (if "if") (parenthesized_expression "(((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)\n               )" (( "(") (binary_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)" (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" (( "(") (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" (* "*") (cast_expression "(byte *)((int)piVar34 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar34 + 10)" (( "(") (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar34")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar34[0xb] == 0 && piVar34[10] == 0)" (( "(") (binary_expression "piVar34[0xb] == 0 && piVar34[10] == 0" (binary_expression "piVar34[0xb] == 0" (subscript_expression "piVar34[0xb]" (identifier "piVar34") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "piVar34[10] == 0" (subscript_expression "piVar34[10]" (identifier "piVar34") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              iVar38 = *piVar34;\n              if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }\n              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);\n              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;\n              piVar17 = local_58[1];\n            }" ({ "{") (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" (identifier "iVar38") (= "=") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) (; ";")) (if_statement "if (local_a0 != 0) {\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" (if "if") (parenthesized_expression "(local_a0 != 0)" (( "(") (binary_expression "local_a0 != 0" (identifier "local_a0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar11 = 0;\n                do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);\n                local_28 = '\x01';\n                local_3c[1] = unaff_EDI + -0x6e6f7;\n                local_3c[2] = unaff_EDI + -0x82347;\n                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;\n                iVar38 = *piVar34;\n              }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                } while (uVar11 < 0x1c);" (do "do") (compound_statement "{\n                  *(undefined4 *)((int)local_3c + uVar11) = 0;\n                  uVar11 = uVar11 + 4;\n                }" ({ "{") (expression_statement "*(undefined4 *)((int)local_3c + uVar11) = 0;" (assignment_expression "*(undefined4 *)((int)local_3c + uVar11) = 0" (pointer_expression "*(undefined4 *)((int)local_3c + uVar11)" (* "*") (cast_expression "(undefined4 *)((int)local_3c + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_3c + uVar11)" (( "(") (binary_expression "(int)local_3c + uVar11" (cast_expression "(int)local_3c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_3c")) (+ "+") (identifier "uVar11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = uVar11 + 4;" (assignment_expression "uVar11 = uVar11 + 4" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 4" (identifier "uVar11") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 < 0x1c)" (( "(") (binary_expression "uVar11 < 0x1c" (identifier "uVar11") (< "<") (number_literal "0x1c")) () ")")) (; ";")) (expression_statement "local_28 = '\x01';" (assignment_expression "local_28 = '\x01'" (identifier "local_28") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "local_3c[1] = unaff_EDI + -0x6e6f7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x6e6f7" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "unaff_EDI + -0x6e6f7" (identifier "unaff_EDI") (+ "+") (number_literal "-0x6e6f7"))) (; ";")) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "unaff_EDI + -0x82347" (identifier "unaff_EDI") (+ "+") (number_literal "-0x82347"))) (; ";")) (if_statement "if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))\n                goto LAB_000a0030;" (if "if") (parenthesized_expression "((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))" (( "(") (binary_expression "(iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" (parenthesized_expression "(iVar38 != 0)" (( "(") (binary_expression "iVar38 != 0" (identifier "iVar38") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0')" (( "(") (comma_expression "FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'" (call_expression "FUN_0002e610()" (identifier "FUN_0002e610") (argument_list "()" (( "(") () ")"))) (, ",") (comma_expression "piVar17 = local_58[1], local_28 == '\0'" (assignment_expression "piVar17 = local_58[1]" (identifier "piVar17") (= "=") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "local_28 == '\0'" (identifier "local_28") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))))) () ")"))) () ")")) (goto_statement "goto LAB_000a0030;" (goto "goto") (statement_identifier "LAB_000a0030") (; ";"))) (expression_statement "iVar38 = *piVar34;" (assignment_expression "iVar38 = *piVar34" (identifier "iVar38") (= "=") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) (; ";")) (} "}"))) (expression_statement "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);" (call_expression "FUN_000958f0(piVar10,iVar38,local_d0[9],0x10)" (identifier "FUN_000958f0") (argument_list "(piVar10,iVar38,local_d0[9],0x10)" (( "(") (identifier "piVar10") (, ",") (identifier "iVar38") (, ",") (subscript_expression "local_d0[9]" (identifier "local_d0") ([ "[") (number_literal "9") (] "]")) (, ",") (number_literal "0x10") () ")"))) (; ";")) (expression_statement "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;" (assignment_expression "*(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar34 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar34 + 10)" (( "(") (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar34")) (+ "+") (number_literal "10")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)piVar34 + 10) | 4" (pointer_expression "*(ushort *)((int)piVar34 + 10)" (* "*") (cast_expression "(ushort *)((int)piVar34 + 10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar34 + 10)" (( "(") (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar34")) (+ "+") (number_literal "10")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (expression_statement "piVar17 = local_58[1];" (assignment_expression "piVar17 = local_58[1]" (identifier "piVar17") (= "=") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_000a0030:\n            iVar12 = iVar12 + 1;" (statement_identifier "LAB_000a0030") (: ":") (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar12 < piVar17[3])" (( "(") (binary_expression "iVar12 < piVar17[3]" (identifier "iVar12") (< "<") (subscript_expression "piVar17[3]" (identifier "piVar17") ([ "[") (number_literal "3") (] "]"))) () ")")) (; ";")) (} "}"))) (if_statement "if ((uVar29 & 0x100) != 0) {\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" (if "if") (parenthesized_expression "((uVar29 & 0x100) != 0)" (( "(") (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" (( "(") (binary_expression "uVar29 & 0x100" (identifier "uVar29") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }\nLAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }\n        }" ({ "{") (if_statement "if (*piVar30 == 1) {\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" (if "if") (parenthesized_expression "(*piVar30 == 1)" (( "(") (binary_expression "*piVar30 == 1" (pointer_expression "*piVar30" (* "*") (identifier "piVar30")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n            iVar12 = piVar30[0xc];\n            if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }\nLAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);\n            if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }\n          }" ({ "{") (expression_statement "iVar12 = piVar30[0xc];" (assignment_expression "iVar12 = piVar30[0xc]" (identifier "iVar12") (= "=") (subscript_expression "piVar30[0xc]" (identifier "piVar30") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (if_statement "if (0 < *param_2) {\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" (if "if") (parenthesized_expression "(0 < *param_2)" (( "(") (binary_expression "0 < *param_2" (number_literal "0") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n              piVar17 = param_2 + 1;\n              iVar38 = 0;\nLAB_000a1290:\n              pcVar21 = (char *)*piVar17;\n              do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );\n            }" ({ "{") (expression_statement "piVar17 = param_2 + 1;" (assignment_expression "piVar17 = param_2 + 1" (identifier "piVar17") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" (identifier "iVar38") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a1290:\n              pcVar21 = (char *)*piVar17;" (statement_identifier "LAB_000a1290") (: ":") (expression_statement "pcVar21 = (char *)*piVar17;" (assignment_expression "pcVar21 = (char *)*piVar17" (identifier "pcVar21") (= "=") (cast_expression "(char *)*piVar17" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";"))) (do_statement "do {\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              } while( true );" (do "do") (compound_statement "{\n                if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }\n                uVar11 = *(uint *)(pcVar21 + 4);\n                while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }\n                pcVar21 = *(char **)(pcVar21 + 0xc);\n              }" ({ "{") (if_statement "if (pcVar21 == (char *)0x0) {\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" (if "if") (parenthesized_expression "(pcVar21 == (char *)0x0)" (( "(") (binary_expression "pcVar21 == (char *)0x0" (identifier "pcVar21") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();\n                  (*pcVar5)();\n                }" ({ "{") (labeled_statement "LAB_000144c2:\n                    \n                  pcVar5 = (code *)invalidInstructionException();" (statement_identifier "LAB_000144c2") (: ":") (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" (identifier "pcVar5") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(pcVar21 + 4)" (* "*") (cast_expression "(uint *)(pcVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 4)" (( "(") (binary_expression "pcVar21 + 4" (identifier "pcVar21") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (while_statement "while( true ) {\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                  if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }\n                  if ((uVar11 & 0x40000) == 0) break;\n                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;\n                  uVar11 = *(uint *)(pcVar21 + 4);\n                }" ({ "{") (if_statement "if ((uVar11 & 0x1000) == 0) {\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" (if "if") (parenthesized_expression "((uVar11 & 0x1000) == 0)" (( "(") (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" (( "(") (binary_expression "uVar11 & 0x1000" (identifier "uVar11") (& "&") (number_literal "0x1000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;\n                    iVar38 = iVar38 + 1;\n                    piVar17 = piVar17 + 5;\n                    if (iVar38 == *param_2) goto LAB_000a12dd;\n                    goto LAB_000a1290;\n                  }" ({ "{") (if_statement "if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;" (if "if") (parenthesized_expression "(((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0))" (( "(") (binary_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&\n                       (*(int *)(pcVar21 + 0x20) < 0)" (parenthesized_expression "((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c)))" (( "(") (binary_expression "(*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "(*pcVar21 == -0x62)" (( "(") (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) (== "==") (number_literal "-0x62")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" (( "(") (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" (identifier "iVar12") (== "==") (pointer_expression "*(int *)(pcVar21 + 0x1c)" (* "*") (cast_expression "(int *)(pcVar21 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x1c)" (( "(") (binary_expression "pcVar21 + 0x1c" (identifier "pcVar21") (+ "+") (number_literal "0x1c")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(pcVar21 + 0x20) < 0)" (( "(") (binary_expression "*(int *)(pcVar21 + 0x20) < 0" (pointer_expression "*(int *)(pcVar21 + 0x20)" (* "*") (cast_expression "(int *)(pcVar21 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x20)" (( "(") (binary_expression "pcVar21 + 0x20" (identifier "pcVar21") (+ "+") (number_literal "0x20")) () ")")))) (< "<") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_000a13e1;" (goto "goto") (statement_identifier "LAB_000a13e1") (; ";"))) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17 = piVar17 + 5;" (assignment_expression "piVar17 = piVar17 + 5" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 5" (identifier "piVar17") (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (iVar38 == *param_2) goto LAB_000a12dd;" (if "if") (parenthesized_expression "(iVar38 == *param_2)" (( "(") (binary_expression "iVar38 == *param_2" (identifier "iVar38") (== "==") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (goto_statement "goto LAB_000a12dd;" (goto "goto") (statement_identifier "LAB_000a12dd") (; ";"))) (goto_statement "goto LAB_000a1290;" (goto "goto") (statement_identifier "LAB_000a1290") (; ";")) (} "}"))) (if_statement "if ((uVar11 & 0x40000) == 0) break;" (if "if") (parenthesized_expression "((uVar11 & 0x40000) == 0)" (( "(") (binary_expression "(uVar11 & 0x40000) == 0" (parenthesized_expression "(uVar11 & 0x40000)" (( "(") (binary_expression "uVar11 & 0x40000" (identifier "uVar11") (& "&") (number_literal "0x40000")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" (identifier "pcVar21") (= "=") (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" (* "*") (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" (( "(") (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" (* "*") (cast_expression "(int *)(pcVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x14)" (( "(") (binary_expression "pcVar21 + 0x14" (identifier "pcVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (pcVar21 == (char *)0x0) goto LAB_000144c2;" (if "if") (parenthesized_expression "(pcVar21 == (char *)0x0)" (( "(") (binary_expression "pcVar21 == (char *)0x0" (identifier "pcVar21") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000144c2;" (goto "goto") (statement_identifier "LAB_000144c2") (; ";"))) (expression_statement "uVar11 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar11 = *(uint *)(pcVar21 + 4)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(pcVar21 + 4)" (* "*") (cast_expression "(uint *)(pcVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 4)" (( "(") (binary_expression "pcVar21 + 4" (identifier "pcVar21") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" (identifier "pcVar21") (= "=") (pointer_expression "*(char **)(pcVar21 + 0xc)" (* "*") (cast_expression "(char **)(pcVar21 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0xc)" (( "(") (binary_expression "pcVar21 + 0xc" (identifier "pcVar21") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000a12dd:\n            iVar38 = *(int *)(piVar30[6] + 8);" (statement_identifier "LAB_000a12dd") (: ":") (expression_statement "iVar38 = *(int *)(piVar30[6] + 8);" (assignment_expression "iVar38 = *(int *)(piVar30[6] + 8)" (identifier "iVar38") (= "=") (pointer_expression "*(int *)(piVar30[6] + 8)" (* "*") (cast_expression "(int *)(piVar30[6] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar30[6] + 8)" (( "(") (binary_expression "piVar30[6] + 8" (subscript_expression "piVar30[6]" (identifier "piVar30") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (if_statement "if (iVar38 != 0) {\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" (if "if") (parenthesized_expression "(iVar38 != 0)" (( "(") (binary_expression "iVar38 != 0" (identifier "iVar38") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;\n              if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }\nLAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;\n              goto LAB_000a0050;\n            }" ({ "{") (labeled_statement "LAB_000a12fb:\n              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" (statement_identifier "LAB_000a12fb") (: ":") (if_statement "if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;" (if "if") (parenthesized_expression "(*(char *)(iVar38 + 0x36) == '\0')" (( "(") (binary_expression "*(char *)(iVar38 + 0x36) == '\0'" (pointer_expression "*(char *)(iVar38 + 0x36)" (* "*") (cast_expression "(char *)(iVar38 + 0x36)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x36)" (( "(") (binary_expression "iVar38 + 0x36" (identifier "iVar38") (+ "+") (number_literal "0x36")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a12f0;" (goto "goto") (statement_identifier "LAB_000a12f0") (; ";")))) (if_statement "if (*(short *)(iVar38 + 0x32) != 0) {\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" (if "if") (parenthesized_expression "(*(short *)(iVar38 + 0x32) != 0)" (( "(") (binary_expression "*(short *)(iVar38 + 0x32) != 0" (pointer_expression "*(short *)(iVar38 + 0x32)" (* "*") (cast_expression "(short *)(iVar38 + 0x32)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x32)" (( "(") (binary_expression "iVar38 + 0x32" (identifier "iVar38") (+ "+") (number_literal "0x32")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uVar11 = 0;\nLAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);\n                if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }\n                goto LAB_000a1320;\n              }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a132f:\n                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" (statement_identifier "LAB_000a132f") (: ":") (expression_statement "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);" (assignment_expression "iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" (identifier "iVar16") (= "=") (call_expression "FUN_000624e0(0xffffffff,0xffffffff,2,iVar38)" (identifier "FUN_000624e0") (argument_list "(0xffffffff,0xffffffff,2,iVar38)" (( "(") (number_literal "0xffffffff") (, ",") (number_literal "0xffffffff") (, ",") (number_literal "2") (, ",") (identifier "iVar38") () ")")))) (; ";"))) (if_statement "if (iVar16 == 0) {\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);\n                  if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }\n                  goto LAB_000a14f9;\n                }" ({ "{") (expression_statement "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);" (assignment_expression "pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" (identifier "pbVar1") (= "=") (pointer_expression "*(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" (* "*") (cast_expression "(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar38 + 0x20) + uVar11 * 4)" (( "(") (binary_expression "*(int *)(iVar38 + 0x20) + uVar11 * 4" (pointer_expression "*(int *)(iVar38 + 0x20)" (* "*") (cast_expression "(int *)(iVar38 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x20)" (( "(") (binary_expression "iVar38 + 0x20" (identifier "iVar38") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (binary_expression "uVar11 * 4" (identifier "uVar11") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (0 < *param_2) {\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" (if "if") (parenthesized_expression "(0 < *param_2)" (( "(") (binary_expression "0 < *param_2" (number_literal "0") (< "<") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")) (compound_statement "{\n                    iVar16 = 0;\n                    do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );\n                  }" ({ "{") (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    } while( true );" (do "do") (compound_statement "{\n                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];\n                      if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }\n                      uVar13 = *(uint *)(pcVar21 + 4);\n                      while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }\n                      if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }\n                      iVar16 = iVar16 + 1;\n                      if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }\n                    }" ({ "{") (expression_statement "pcVar21 = (char *)param_2[iVar16 * 5 + 1];" (assignment_expression "pcVar21 = (char *)param_2[iVar16 * 5 + 1]" (identifier "pcVar21") (= "=") (cast_expression "(char *)param_2[iVar16 * 5 + 1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[iVar16 * 5 + 1]" (identifier "param_2") ([ "[") (binary_expression "iVar16 * 5 + 1" (binary_expression "iVar16 * 5" (identifier "iVar16") (* "*") (number_literal "5")) (+ "+") (number_literal "1")) (] "]")))) (; ";")) (if_statement "if (pcVar21 == (char *)0x0) {\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" (if "if") (parenthesized_expression "(pcVar21 == (char *)0x0)" (( "(") (binary_expression "pcVar21 == (char *)0x0" (identifier "pcVar21") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nFUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();\n                        (*pcVar5)();\n                      }" ({ "{") (labeled_statement "FUN_000144b9:\n                    \n                        pcVar5 = (code *)invalidInstructionException();" (statement_identifier "FUN_000144b9") (: ":") (expression_statement "pcVar5 = (code *)invalidInstructionException();" (assignment_expression "pcVar5 = (code *)invalidInstructionException()" (identifier "pcVar5") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(pcVar21 + 4)" (* "*") (cast_expression "(uint *)(pcVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 4)" (( "(") (binary_expression "pcVar21 + 4" (identifier "pcVar21") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (while_statement "while ((uVar13 & 0x1000) != 0) {\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" (while "while") (parenthesized_expression "((uVar13 & 0x1000) != 0)" (( "(") (binary_expression "(uVar13 & 0x1000) != 0" (parenthesized_expression "(uVar13 & 0x1000)" (( "(") (binary_expression "uVar13 & 0x1000" (identifier "uVar13") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }\n                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;\n                        uVar13 = *(uint *)(pcVar21 + 4);\n                      }" ({ "{") (if_statement "if ((uVar13 & 0x40000) == 0) {\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }\n                        else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" (if "if") (parenthesized_expression "((uVar13 & 0x40000) == 0)" (( "(") (binary_expression "(uVar13 & 0x40000) == 0" (parenthesized_expression "(uVar13 & 0x40000)" (( "(") (binary_expression "uVar13 & 0x40000" (identifier "uVar13") (& "&") (number_literal "0x40000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                          pcVar21 = *(char **)(pcVar21 + 0xc);\n                        }" ({ "{") (expression_statement "pcVar21 = *(char **)(pcVar21 + 0xc);" (assignment_expression "pcVar21 = *(char **)(pcVar21 + 0xc)" (identifier "pcVar21") (= "=") (pointer_expression "*(char **)(pcVar21 + 0xc)" (* "*") (cast_expression "(char **)(pcVar21 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0xc)" (( "(") (binary_expression "pcVar21 + 0xc" (identifier "pcVar21") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" (else "else") (compound_statement "{\n                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);\n                        }" ({ "{") (expression_statement "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);" (assignment_expression "pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4)" (identifier "pcVar21") (= "=") (pointer_expression "*(char **)(*(int *)(pcVar21 + 0x14) + 4)" (* "*") (cast_expression "(char **)(*(int *)(pcVar21 + 0x14) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar21 + 0x14) + 4)" (( "(") (binary_expression "*(int *)(pcVar21 + 0x14) + 4" (pointer_expression "*(int *)(pcVar21 + 0x14)" (* "*") (cast_expression "(int *)(pcVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x14)" (( "(") (binary_expression "pcVar21 + 0x14" (identifier "pcVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (pcVar21 == (char *)0x0) goto FUN_000144b9;" (if "if") (parenthesized_expression "(pcVar21 == (char *)0x0)" (( "(") (binary_expression "pcVar21 == (char *)0x0" (identifier "pcVar21") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto FUN_000144b9;" (goto "goto") (statement_identifier "FUN_000144b9") (; ";"))) (expression_statement "uVar13 = *(uint *)(pcVar21 + 4);" (assignment_expression "uVar13 = *(uint *)(pcVar21 + 4)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(pcVar21 + 4)" (* "*") (cast_expression "(uint *)(pcVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 4)" (( "(") (binary_expression "pcVar21 + 4" (identifier "pcVar21") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" (if "if") (parenthesized_expression "(((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c)))" (( "(") (binary_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&\n                         (iVar12 == *(int *)(pcVar21 + 0x1c))" (parenthesized_expression "((*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)))" (( "(") (binary_expression "(*pcVar21 == -0x62) &&\n                          (*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" (parenthesized_expression "(*pcVar21 == -0x62)" (( "(") (binary_expression "*pcVar21 == -0x62" (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21")) (== "==") (number_literal "-0x62")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))" (( "(") (binary_expression "*(int *)(pcVar21 + 0x20) ==\n                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (pointer_expression "*(int *)(pcVar21 + 0x20)" (* "*") (cast_expression "(int *)(pcVar21 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x20)" (( "(") (binary_expression "pcVar21 + 0x20" (identifier "pcVar21") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (* "*") (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" (* "*") (cast_expression "(int *)(iVar38 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 4)" (( "(") (binary_expression "iVar38 + 4" (identifier "iVar38") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2"))) () ")")))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar12 == *(int *)(pcVar21 + 0x1c))" (( "(") (binary_expression "iVar12 == *(int *)(pcVar21 + 0x1c)" (identifier "iVar12") (== "==") (pointer_expression "*(int *)(pcVar21 + 0x1c)" (* "*") (cast_expression "(int *)(pcVar21 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0x1c)" (( "(") (binary_expression "pcVar21 + 0x1c" (identifier "pcVar21") (+ "+") (number_literal "0x1c")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n                        puVar22 = (undefined4 *)FUN_0005da30();\n                        if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }\n                        bVar8 = *(byte *)*puVar22;\n                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }\n                      }" ({ "{") (expression_statement "puVar22 = (undefined4 *)FUN_0005da30();" (assignment_expression "puVar22 = (undefined4 *)FUN_0005da30()" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)FUN_0005da30()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005da30()" (identifier "FUN_0005da30") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar22 == (undefined4 *)0x0) {\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" (if "if") (parenthesized_expression "(puVar22 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar22 == (undefined4 *)0x0" (identifier "puVar22") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                          puVar22 = *(undefined4 **)(*piVar10 + 8);\n                        }" ({ "{") (expression_statement "puVar22 = *(undefined4 **)(*piVar10 + 8);" (assignment_expression "puVar22 = *(undefined4 **)(*piVar10 + 8)" (identifier "puVar22") (= "=") (pointer_expression "*(undefined4 **)(*piVar10 + 8)" (* "*") (cast_expression "(undefined4 **)(*piVar10 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar10 + 8)" (( "(") (binary_expression "*piVar10 + 8" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar8 = *(byte *)*puVar22;" (assignment_expression "bVar8 = *(byte *)*puVar22" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)*puVar22" (* "*") (cast_expression "(byte *)*puVar22" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))))) (; ";")) (if_statement "if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" (if "if") (parenthesized_expression "(*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1))" (( "(") (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" (( "(") (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" (identifier "unaff_EDI") (+ "+") (number_literal "0x64d89")) (+ "+") (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8"))) () ")")))) (== "==") (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)*pbVar1)" (( "(") (binary_expression "unaff_EDI + 0x64d89 + (uint)*pbVar1" (binary_expression "unaff_EDI + 0x64d89" (identifier "unaff_EDI") (+ "+") (number_literal "0x64d89")) (+ "+") (binary_expression "(uint)*pbVar1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar1"))) () ")"))))) () ")")) (compound_statement "{\n                          if (bVar8 == 0) goto LAB_000a14dd;\n                          iVar14 = 1;\n                          while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }\n                        }" ({ "{") (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a14dd;" (goto "goto") (statement_identifier "LAB_000a14dd") (; ";"))) (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" (identifier "iVar14") (= "=") (number_literal "1")) (; ";")) (while_statement "while (bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" (while "while") (parenthesized_expression "(bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]))" (( "(") (comma_expression "bVar8 = ((byte *)*puVar22)[iVar14],\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (assignment_expression "bVar8 = ((byte *)*puVar22)[iVar14]" (identifier "bVar8") (= "=") (subscript_expression "((byte *)*puVar22)[iVar14]" (parenthesized_expression "((byte *)*puVar22)" (( "(") (cast_expression "(byte *)*puVar22" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) () ")")) ([ "[") (identifier "iVar14") (] "]"))) (, ",") (binary_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==\n                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" (* "*") (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)bVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)bVar8)" (( "(") (binary_expression "unaff_EDI + 0x64d89 + (uint)bVar8" (binary_expression "unaff_EDI + 0x64d89" (identifier "unaff_EDI") (+ "+") (number_literal "0x64d89")) (+ "+") (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8"))) () ")")))) (== "==") (pointer_expression "*(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (* "*") (cast_expression "(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])" (( "(") (binary_expression "unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14]" (binary_expression "unaff_EDI + 0x64d89" (identifier "unaff_EDI") (+ "+") (number_literal "0x64d89")) (+ "+") (cast_expression "(uint)pbVar1[iVar14]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar1[iVar14]" (identifier "pbVar1") ([ "[") (identifier "iVar14") (] "]")))) () ")")))))) () ")")) (compound_statement "{\n                            iVar14 = iVar14 + 1;\n                            if (bVar8 == 0) goto LAB_000a14dd;\n                          }" ({ "{") (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar8 == 0) goto LAB_000a14dd;" (if "if") (parenthesized_expression "(bVar8 == 0)" (( "(") (binary_expression "bVar8 == 0" (identifier "bVar8") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a14dd;" (goto "goto") (statement_identifier "LAB_000a14dd") (; ";"))) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*param_2 <= iVar16) {\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" (if "if") (parenthesized_expression "(*param_2 <= iVar16)" (( "(") (binary_expression "*param_2 <= iVar16" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (<= "<=") (identifier "iVar16")) () ")")) (compound_statement "{\n                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n                        goto LAB_000a13d9;\n                      }" ({ "{") (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar38 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x32)" (( "(") (binary_expression "iVar38 + 0x32" (identifier "iVar38") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (goto_statement "goto LAB_000a13d9;" (goto "goto") (statement_identifier "LAB_000a13d9") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_000a14f9;" (goto "goto") (statement_identifier "LAB_000a14f9") (; ";")) (} "}"))) (goto_statement "goto LAB_000a1320;" (goto "goto") (statement_identifier "LAB_000a1320") (; ";")) (} "}"))) (labeled_statement "LAB_000a13e1:\n              *(undefined1 *)((int)local_d0 + 0x33) = 1;" (statement_identifier "LAB_000a13e1") (: ":") (expression_statement "*(undefined1 *)((int)local_d0 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x33)" (* "*") (cast_expression "(undefined1 *)((int)local_d0 + 0x33)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x33)" (( "(") (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x33")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000a0050;" (goto "goto") (statement_identifier "LAB_000a0050") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000a1530:\n          if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" (statement_identifier "LAB_000a1530") (: ":") (if_statement "if (local_b4 == (int *)0x0) {\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" (if "if") (parenthesized_expression "(local_b4 == (int *)0x0)" (( "(") (binary_expression "local_b4 == (int *)0x0" (identifier "local_b4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;\n            local_d0[2] = (int)param_2;\n          }" ({ "{") (expression_statement "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;" (assignment_expression "*(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" (* "*") (cast_expression "(ushort *)(local_d0 + 0xb)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 0xb)" (( "(") (binary_expression "local_d0 + 0xb" (identifier "local_d0") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (binary_expression "*(ushort *)(local_d0 + 0xb) | 0x80" (pointer_expression "*(ushort *)(local_d0 + 0xb)" (* "*") (cast_expression "(ushort *)(local_d0 + 0xb)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 0xb)" (( "(") (binary_expression "local_d0 + 0xb" (identifier "local_d0") (+ "+") (number_literal "0xb")) () ")")))) (| "|") (number_literal "0x80"))) (; ";")) (expression_statement "local_d0[2] = (int)param_2;" (assignment_expression "local_d0[2] = (int)param_2" (subscript_expression "local_d0[2]" (identifier "local_d0") ([ "[") (number_literal "2") (] "]")) (= "=") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (; ";")) (} "}")))) (} "}"))) (labeled_statement "LAB_000a0050:\n        iVar38 = local_4c;" (statement_identifier "LAB_000a0050") (: ":") (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" (identifier "iVar38") (= "=") (identifier "local_4c")) (; ";"))) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" (identifier "piVar17") (= "=") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" (identifier "uVar9") (= "=") (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)uVar15 >> 0x10)" (( "(") (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" (identifier "iVar12") (= "=") (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }\n        else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" (if "if") (parenthesized_expression "(((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))))" (( "(") (binary_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&\n           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" (parenthesized_expression "((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0))" (( "(") (binary_expression "(local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" (parenthesized_expression "(local_a0 == 1)" (( "(") (binary_expression "local_a0 == 1" (identifier "local_a0") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(local_58[0] + 0xb) & 0x20) == 0" (parenthesized_expression "(*(byte *)(local_58[0] + 0xb) & 0x20)" (( "(") (binary_expression "*(byte *)(local_58[0] + 0xb) & 0x20" (pointer_expression "*(byte *)(local_58[0] + 0xb)" (* "*") (cast_expression "(byte *)(local_58[0] + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58[0] + 0xb)" (( "(") (binary_expression "local_58[0] + 0xb" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))" (( "(") (parenthesized_expression "(iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0))" (( "(") (comma_expression "iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (assignment_expression "iVar16 = *(int *)(iVar12 + 0x18)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar12 + 0x18)" (* "*") (cast_expression "(int *)(iVar12 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x18)" (( "(") (binary_expression "iVar12 + 0x18" (identifier "iVar12") (+ "+") (number_literal "0x18")) () ")"))))) (, ",") (binary_expression "*(int *)(iVar16 + 0x38) == 0 &&\n            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (binary_expression "*(int *)(iVar16 + 0x38) == 0" (pointer_expression "*(int *)(iVar16 + 0x38)" (* "*") (cast_expression "(int *)(iVar16 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x38)" (( "(") (binary_expression "iVar16 + 0x38" (identifier "iVar16") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "((*(byte *)(iVar12 + 0x2d) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(iVar12 + 0x2d) & 2) == 0" (parenthesized_expression "(*(byte *)(iVar12 + 0x2d) & 2)" (( "(") (binary_expression "*(byte *)(iVar12 + 0x2d) & 2" (pointer_expression "*(byte *)(iVar12 + 0x2d)" (* "*") (cast_expression "(byte *)(iVar12 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x2d)" (( "(") (binary_expression "iVar12 + 0x2d" (identifier "iVar12") (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n          iVar14 = *(int *)(iVar12 + 0x30);\n          *(undefined2 *)(local_4c + 0x2a) = 0;\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          iVar28 = FUN_000624e0(0,0,0x82,0);\n          uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n          if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }\n          if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }\nLAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;\n          piVar17[0xc9] = iVar38;\n          *(undefined4 *)(iVar38 + 8) = 1;\n          *(undefined4 *)(iVar38 + 0xc) = 0;\n          *(undefined2 *)(piVar17 + 0x12) = 1;\n          piVar17[0xbc] = iVar14;\n          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }\n          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }\nLAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }\n          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "iVar14 = *(int *)(iVar12 + 0x30);" (assignment_expression "iVar14 = *(int *)(iVar12 + 0x30)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar12 + 0x30)" (* "*") (cast_expression "(int *)(iVar12 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x30)" (( "(") (binary_expression "iVar12 + 0x30" (identifier "iVar12") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)(local_4c + 0x2a) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x2a) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x2a)" (* "*") (cast_expression "(undefined2 *)(local_4c + 0x2a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x2a)" (( "(") (binary_expression "local_4c + 0x2a" (identifier "local_4c") (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" (* "*") (cast_expression "(undefined4 *)(local_4c + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x24)" (( "(") (binary_expression "local_4c + 0x24" (identifier "local_4c") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar28 = FUN_000624e0(0,0,0x82,0);" (assignment_expression "iVar28 = FUN_000624e0(0,0,0x82,0)" (identifier "iVar28") (= "=") (call_expression "FUN_000624e0(0,0,0x82,0)" (identifier "FUN_000624e0") (argument_list "(0,0,0x82,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0x82") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" (identifier "uVar9") (= "=") (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)uVar15 >> 0x10)" (( "(") (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (iVar28 == 0) {\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }\n          else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" (if "if") (parenthesized_expression "(iVar28 == 0)" (( "(") (binary_expression "iVar28 == 0" (identifier "iVar28") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar16 = *(int *)(iVar16 + 8);\n            if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n          }" ({ "{") (expression_statement "iVar16 = *(int *)(iVar16 + 8);" (assignment_expression "iVar16 = *(int *)(iVar16 + 8)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar16 + 8)" (* "*") (cast_expression "(int *)(iVar16 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 8)" (( "(") (binary_expression "iVar16 + 8" (identifier "iVar16") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) {\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }\n            else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" ({ "{") (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar38 + 0x24)" (* "*") (cast_expression "(int *)(iVar38 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" (else "else") (compound_statement "{\n              do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);\n              iVar12 = *(int *)(iVar38 + 0x24);\n            }" ({ "{") (do_statement "do {\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              } while (iVar16 != 0);" (do "do") (compound_statement "{\n                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }\nLAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);\n                iVar16 = *(int *)(iVar16 + 0x14);\n              }" ({ "{") (if_statement "if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)) {\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" (if "if") (parenthesized_expression "(((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4))" (( "(") (binary_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&\n                   (*(ushort *)(iVar16 + 0x32) < 4)" (parenthesized_expression "((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0))" (( "(") (binary_expression "(*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)" (parenthesized_expression "(*(char *)(iVar16 + 0x36) != '\0')" (( "(") (binary_expression "*(char *)(iVar16 + 0x36) != '\0'" (pointer_expression "*(char *)(iVar16 + 0x36)" (* "*") (cast_expression "(char *)(iVar16 + 0x36)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x36)" (( "(") (binary_expression "iVar16 + 0x36" (identifier "iVar16") (+ "+") (number_literal "0x36")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(iVar16 + 0x24) == 0)" (( "(") (binary_expression "*(int *)(iVar16 + 0x24) == 0" (pointer_expression "*(int *)(iVar16 + 0x24)" (* "*") (cast_expression "(int *)(iVar16 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x24)" (( "(") (binary_expression "iVar16 + 0x24" (identifier "iVar16") (+ "+") (number_literal "0x24")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) < 4)" (( "(") (binary_expression "*(ushort *)(iVar16 + 0x32) < 4" (pointer_expression "*(ushort *)(iVar16 + 0x32)" (* "*") (cast_expression "(ushort *)(iVar16 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x32)" (( "(") (binary_expression "iVar16 + 0x32" (identifier "iVar16") (+ "+") (number_literal "0x32")) () ")")))) (< "<") (number_literal "4")) () ")"))) () ")")) (compound_statement "{\n                  bVar8 = *(byte *)(iVar16 + 0x37);\n                  if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }\n                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;\n                  uVar9 = (undefined2)uVar11;\n                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  goto LAB_000a1a26;\n                }" ({ "{") (expression_statement "bVar8 = *(byte *)(iVar16 + 0x37);" (assignment_expression "bVar8 = *(byte *)(iVar16 + 0x37)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)(iVar16 + 0x37)" (* "*") (cast_expression "(byte *)(iVar16 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x37)" (( "(") (binary_expression "iVar16 + 0x37" (identifier "iVar16") (+ "+") (number_literal "0x37")) () ")"))))) (; ";")) (if_statement "if (*(ushort *)(iVar16 + 0x32) == 0) {\n                    uVar11 = 0;\n                  }\n                  else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" (if "if") (parenthesized_expression "(*(ushort *)(iVar16 + 0x32) == 0)" (( "(") (binary_expression "*(ushort *)(iVar16 + 0x32) == 0" (pointer_expression "*(ushort *)(iVar16 + 0x32)" (* "*") (cast_expression "(ushort *)(iVar16 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x32)" (( "(") (binary_expression "iVar16 + 0x32" (identifier "iVar16") (+ "+") (number_literal "0x32")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar11 = 0;\n                  }" ({ "{") (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" (else "else") (compound_statement "{\n                    uVar13 = 0;\n                    do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);\n                    if (uVar13 != uVar11) goto LAB_000a1960;\n                  }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    } while ((int)uVar13 < (int)uVar11);" (do "do") (compound_statement "{\n                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);\n                      if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }\n                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;\n                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                      uVar13 = uVar13 + 1;\n                    }" ({ "{") (expression_statement "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16);" (assignment_expression "iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" (identifier "iVar28") (= "=") (call_expression "FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" (identifier "FUN_000624e0") (argument_list "(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,\n                                            iVar16)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82" (parenthesized_expression "(-(uint)((bVar8 & 8) == 0) & 0xffffff80)" (( "(") (binary_expression "-(uint)((bVar8 & 8) == 0) & 0xffffff80" (unary_expression "-(uint)((bVar8 & 8) == 0)" (- "-") (call_expression "(uint)((bVar8 & 8) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((bVar8 & 8) == 0)" (( "(") (binary_expression "(bVar8 & 8) == 0" (parenthesized_expression "(bVar8 & 8)" (( "(") (binary_expression "bVar8 & 8" (identifier "bVar8") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")))) (& "&") (number_literal "0xffffff80")) () ")")) (+ "+") (number_literal "0x82")) (, ",") (identifier "iVar16") () ")")))) (; ";")) (if_statement "if (iVar28 == 0) {\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" (if "if") (parenthesized_expression "(iVar28 == 0)" (( "(") (binary_expression "iVar28 == 0" (identifier "iVar28") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);\n                        break;\n                      }" ({ "{") (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar16 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x32)" (( "(") (binary_expression "iVar16 + 0x32" (identifier "iVar16") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;" (assignment_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28" (pointer_expression "*(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar38 + 0x30) + uVar13 * 4)" (( "(") (binary_expression "*(int *)(iVar38 + 0x30) + uVar13 * 4" (pointer_expression "*(int *)(iVar38 + 0x30)" (* "*") (cast_expression "(int *)(iVar38 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x30)" (( "(") (binary_expression "iVar38 + 0x30" (identifier "iVar38") (+ "+") (number_literal "0x30")) () ")")))) (+ "+") (binary_expression "uVar13 * 4" (identifier "uVar13") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "iVar28")) (; ";")) (expression_statement "uVar11 = (uint)*(ushort *)(iVar16 + 0x32);" (assignment_expression "uVar11 = (uint)*(ushort *)(iVar16 + 0x32)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(ushort *)(iVar16 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar16 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x32)" (( "(") (binary_expression "iVar16 + 0x32" (identifier "iVar16") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (expression_statement "uVar13 = uVar13 + 1;" (assignment_expression "uVar13 = uVar13 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 1" (identifier "uVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)uVar13 < (int)uVar11)" (( "(") (binary_expression "(int)uVar13 < (int)uVar11" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (; ";")) (if_statement "if (uVar13 != uVar11) goto LAB_000a1960;" (if "if") (parenthesized_expression "(uVar13 != uVar11)" (( "(") (binary_expression "uVar13 != uVar11" (identifier "uVar13") (!= "!=") (identifier "uVar11")) () ")")) (goto_statement "goto LAB_000a1960;" (goto "goto") (statement_identifier "LAB_000a1960") (; ";"))) (} "}")))) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1201;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1201" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar38 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0x1201")) (; ";")) (expression_statement "uVar9 = (undefined2)uVar11;" (assignment_expression "uVar9 = (undefined2)uVar11" (identifier "uVar9") (= "=") (cast_expression "(undefined2)uVar11" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "uVar11"))) (; ";")) (if_statement "if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }\n                  else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0))" (( "(") (binary_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&\n                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(iVar16 + 0x37) & 0x20) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 0x20)" (( "(") (binary_expression "*(byte *)(iVar16 + 0x37) & 0x20" (pointer_expression "*(byte *)(iVar16 + 0x37)" (* "*") (cast_expression "(byte *)(iVar16 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x37)" (( "(") (binary_expression "iVar16 + 0x37" (identifier "iVar16") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)" (( "(") (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||\n                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (binary_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40))" (( "(") (binary_expression "*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)" (pointer_expression "*(uint *)(iVar12 + 0x40)" (* "*") (cast_expression "(uint *)(iVar12 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x40)" (( "(") (binary_expression "iVar12 + 0x40" (identifier "iVar12") (+ "+") (number_literal "0x40")) () ")")))) (& "&") (pointer_expression "*(uint *)(iVar16 + 0x40)" (* "*") (cast_expression "(uint *)(iVar16 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x40)" (( "(") (binary_expression "iVar16 + 0x40" (identifier "iVar16") (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0" (parenthesized_expression "(*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c))" (( "(") (binary_expression "*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)" (pointer_expression "*(uint *)(iVar12 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar12 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x3c)" (( "(") (binary_expression "iVar12 + 0x3c" (identifier "iVar12") (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (pointer_expression "*(uint *)(iVar16 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar16 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x3c)" (( "(") (binary_expression "iVar16 + 0x3c" (identifier "iVar16") (+ "+") (number_literal "0x3c")) () ")"))))) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" ({ "{") (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x28)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x28)" (( "(") (binary_expression "iVar38 + 0x28" (identifier "iVar38") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x18)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x18)" (( "(") (binary_expression "iVar38 + 0x18" (identifier "iVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" (* "*") (cast_expression "(int *)(iVar38 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x20)" (( "(") (binary_expression "iVar38 + 0x20" (identifier "iVar38") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x14)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x14)" (( "(") (binary_expression "iVar38 + 0x14" (identifier "iVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0x27")) (; ";")) (} "}")) (else_clause "else {\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" (else "else") (compound_statement "{\n                    *(int *)(iVar38 + 0x20) = iVar16;\n                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;\n                    *(undefined2 *)(iVar38 + 0x28) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x18) = uVar9;\n                    *(undefined2 *)(iVar38 + 0x14) = 0x27;\n                  }" ({ "{") (expression_statement "*(int *)(iVar38 + 0x20) = iVar16;" (assignment_expression "*(int *)(iVar38 + 0x20) = iVar16" (pointer_expression "*(int *)(iVar38 + 0x20)" (* "*") (cast_expression "(int *)(iVar38 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x20)" (( "(") (binary_expression "iVar38 + 0x20" (identifier "iVar38") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1241;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1241" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar38 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0x1241")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x28)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x28)" (( "(") (binary_expression "iVar38 + 0x28" (identifier "iVar38") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = uVar9;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = uVar9" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x18)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x18)" (( "(") (binary_expression "iVar38 + 0x18" (identifier "iVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x27;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x27" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x14)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x14)" (( "(") (binary_expression "iVar38 + 0x14" (identifier "iVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0x27")) (; ";")) (} "}")))) (goto_statement "goto LAB_000a1a26;" (goto "goto") (statement_identifier "LAB_000a1a26") (; ";")) (} "}"))) (labeled_statement "LAB_000a1960:\n                uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (statement_identifier "LAB_000a1960") (: ":") (expression_statement "uVar9 = (undefined2)((uint)uVar15 >> 0x10);" (assignment_expression "uVar9 = (undefined2)((uint)uVar15 >> 0x10)" (identifier "uVar9") (= "=") (call_expression "(undefined2)((uint)uVar15 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "((uint)uVar15 >> 0x10)" (( "(") (binary_expression "(uint)uVar15 >> 0x10" (cast_expression "(uint)uVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";"))) (expression_statement "iVar16 = *(int *)(iVar16 + 0x14);" (assignment_expression "iVar16 = *(int *)(iVar16 + 0x14)" (identifier "iVar16") (= "=") (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")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar38 + 0x24)" (* "*") (cast_expression "(int *)(iVar38 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" (else "else") (compound_statement "{\n            *(undefined4 *)(iVar38 + 0x24) = 0x1101;\n            **(int **)(iVar38 + 0x30) = iVar28;\n            *(undefined2 *)(iVar38 + 0x28) = 1;\n            *(undefined2 *)(iVar38 + 0x18) = 1;\n            *(undefined2 *)(iVar38 + 0x14) = 0x21;\n            iVar12 = *(int *)(iVar38 + 0x24);\n          }" ({ "{") (expression_statement "*(undefined4 *)(iVar38 + 0x24) = 0x1101;" (assignment_expression "*(undefined4 *)(iVar38 + 0x24) = 0x1101" (pointer_expression "*(undefined4 *)(iVar38 + 0x24)" (* "*") (cast_expression "(undefined4 *)(iVar38 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0x1101")) (; ";")) (expression_statement "**(int **)(iVar38 + 0x30) = iVar28;" (assignment_expression "**(int **)(iVar38 + 0x30) = iVar28" (pointer_expression "**(int **)(iVar38 + 0x30)" (* "*") (pointer_expression "*(int **)(iVar38 + 0x30)" (* "*") (cast_expression "(int **)(iVar38 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar38 + 0x30)" (( "(") (binary_expression "iVar38 + 0x30" (identifier "iVar38") (+ "+") (number_literal "0x30")) () ")"))))) (= "=") (identifier "iVar28")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x28) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x28) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x28)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x28)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x28)" (( "(") (binary_expression "iVar38 + 0x28" (identifier "iVar38") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x18) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x18) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x18)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x18)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x18)" (( "(") (binary_expression "iVar38 + 0x18" (identifier "iVar38") (+ "+") (number_literal "0x18")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined2 *)(iVar38 + 0x14) = 0x21;" (assignment_expression "*(undefined2 *)(iVar38 + 0x14) = 0x21" (pointer_expression "*(undefined2 *)(iVar38 + 0x14)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x14)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x14)" (( "(") (binary_expression "iVar38 + 0x14" (identifier "iVar38") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0x21")) (; ";")) (expression_statement "iVar12 = *(int *)(iVar38 + 0x24);" (assignment_expression "iVar12 = *(int *)(iVar38 + 0x24)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar38 + 0x24)" (* "*") (cast_expression "(int *)(iVar38 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar12 == 0) {\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar12 = local_58[0][1];\n            goto LAB_000a0070;\n          }" ({ "{") (expression_statement "iVar12 = local_58[0][1];" (assignment_expression "iVar12 = local_58[0][1]" (identifier "iVar12") (= "=") (subscript_expression "local_58[0][1]" (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_000a0070;" (goto "goto") (statement_identifier "LAB_000a0070") (; ";")) (} "}"))) (labeled_statement "LAB_000a1a26:\n          *(undefined2 *)(iVar38 + 0x16) = 1;" (statement_identifier "LAB_000a1a26") (: ":") (expression_statement "*(undefined2 *)(iVar38 + 0x16) = 1;" (assignment_expression "*(undefined2 *)(iVar38 + 0x16) = 1" (pointer_expression "*(undefined2 *)(iVar38 + 0x16)" (* "*") (cast_expression "(undefined2 *)(iVar38 + 0x16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x16)" (( "(") (binary_expression "iVar38 + 0x16" (identifier "iVar38") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (expression_statement "piVar17[0xc9] = iVar38;" (assignment_expression "piVar17[0xc9] = iVar38" (subscript_expression "piVar17[0xc9]" (identifier "piVar17") ([ "[") (number_literal "0xc9") (] "]")) (= "=") (identifier "iVar38")) (; ";")) (expression_statement "*(undefined4 *)(iVar38 + 8) = 1;" (assignment_expression "*(undefined4 *)(iVar38 + 8) = 1" (pointer_expression "*(undefined4 *)(iVar38 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar38 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 8)" (( "(") (binary_expression "iVar38 + 8" (identifier "iVar38") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(iVar38 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(iVar38 + 0xc) = 0" (pointer_expression "*(undefined4 *)(iVar38 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar38 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0xc)" (( "(") (binary_expression "iVar38 + 0xc" (identifier "iVar38") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(piVar17 + 0x12) = 1;" (assignment_expression "*(undefined2 *)(piVar17 + 0x12) = 1" (pointer_expression "*(undefined2 *)(piVar17 + 0x12)" (* "*") (cast_expression "(undefined2 *)(piVar17 + 0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17 + 0x12)" (( "(") (binary_expression "piVar17 + 0x12" (identifier "piVar17") (+ "+") (number_literal "0x12")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar17[0xbc] = iVar14;" (assignment_expression "piVar17[0xbc] = iVar14" (subscript_expression "piVar17[0xbc]" (identifier "piVar17") ([ "[") (number_literal "0xbc") (] "]")) (= "=") (identifier "iVar14")) (; ";")) (if_statement "if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" (if "if") (parenthesized_expression "((undefined4 *)piVar17[2] != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)piVar17[2] != (undefined4 *)0x0" (cast_expression "(undefined4 *)piVar17[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];\n          }" ({ "{") (expression_statement "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];" (assignment_expression "*(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2]" (pointer_expression "*(char *)((int)piVar17 + 0x2f)" (* "*") (cast_expression "(char *)((int)piVar17 + 0x2f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 0x2f)" (( "(") (binary_expression "(int)piVar17 + 0x2f" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "0x2f")) () ")")))) (= "=") (cast_expression "(char)*(undefined4 *)piVar17[2]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(undefined4 *)piVar17[2]" (* "*") (cast_expression "(undefined4 *)piVar17[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" (if "if") (parenthesized_expression "((*(byte *)((int)piVar17 + 0x2d) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar17 + 0x2d) & 1) != 0" (parenthesized_expression "(*(byte *)((int)piVar17 + 0x2d) & 1)" (( "(") (binary_expression "*(byte *)((int)piVar17 + 0x2d) & 1" (pointer_expression "*(byte *)((int)piVar17 + 0x2d)" (* "*") (cast_expression "(byte *)((int)piVar17 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 0x2d)" (( "(") (binary_expression "(int)piVar17 + 0x2d" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined1 *)((int)piVar17 + 0x33) = 1;\n          }" ({ "{") (expression_statement "*(undefined1 *)((int)piVar17 + 0x33) = 1;" (assignment_expression "*(undefined1 *)((int)piVar17 + 0x33) = 1" (pointer_expression "*(undefined1 *)((int)piVar17 + 0x33)" (* "*") (cast_expression "(undefined1 *)((int)piVar17 + 0x33)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 0x33)" (( "(") (binary_expression "(int)piVar17 + 0x33" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "0x33")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (labeled_statement "LAB_000a0239:\n          if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" (statement_identifier "LAB_000a0239") (: ":") (if_statement "if (local_d0[2] == 0) {\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" (if "if") (parenthesized_expression "(local_d0[2] == 0)" (( "(") (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" (identifier "local_d0") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }\n          }" ({ "{") (labeled_statement "LAB_000a0ea8:\n            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" (statement_identifier "LAB_000a0ea8") (: ":") (if_statement "if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x1d) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x1d) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x1d) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x1d) & 0x10" (pointer_expression "*(byte *)(iVar4 + 0x1d)" (* "*") (cast_expression "(byte *)(iVar4 + 0x1d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1d)" (( "(") (binary_expression "iVar4 + 0x1d" (identifier "iVar4") (+ "+") (number_literal "0x1d")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_d0[0x10] = -1;\n              local_d0[0x11] = -1;\n            }" ({ "{") (expression_statement "local_d0[0x10] = -1;" (assignment_expression "local_d0[0x10] = -1" (subscript_expression "local_d0[0x10]" (identifier "local_d0") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "-1")) (; ";")) (expression_statement "local_d0[0x11] = -1;" (assignment_expression "local_d0[0x11] = -1" (subscript_expression "local_d0[0x11]" (identifier "local_d0") ([ "[") (number_literal "0x11") (] "]")) (= "=") (number_literal "-1")) (; ";")) (} "}")))) (} "}")))) (if_statement "if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" (if "if") (parenthesized_expression "((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0'))" (( "(") (binary_expression "(piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')" (parenthesized_expression "(piVar10[9] == 0)" (( "(") (binary_expression "piVar10[9] == 0" (subscript_expression "piVar10[9]" (identifier "piVar10") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }\n            uVar40 = CONCAT44(local_c8,local_cc);\n            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];\n            bVar8 = 0;\n            if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }\nLAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }\n          }" ({ "{") (if_statement "if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }\n            else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" (if "if") (parenthesized_expression "((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0))" (( "(") (binary_expression "(*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)" (parenthesized_expression "(*(byte *)((int)local_d0 + 0x2e) < 2)" (( "(") (binary_expression "*(byte *)((int)local_d0 + 0x2e) < 2" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(byte *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")")))) (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n            }" ({ "{") (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" (identifier "local_cc") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" (identifier "local_c8") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (else_clause "else {\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" (else "else") (compound_statement "{\n              local_cc = 0xffffffff;\n              local_c8 = 0xffffffff;\n              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }\n            }" ({ "{") (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" (identifier "local_cc") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" (identifier "local_c8") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x49) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x49) & 1) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x49) & 1)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x49) & 1" (pointer_expression "*(byte *)(iVar4 + 0x49)" (* "*") (cast_expression "(byte *)(iVar4 + 0x49)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x49)" (( "(") (binary_expression "iVar4 + 0x49" (identifier "iVar4") (+ "+") (number_literal "0x49")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar41 = FUN_0003db30();\n                if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }\n                local_b4 = (int *)(uVar41 >> 0x20);\n                local_bc = (uint)uVar41;\n                local_cc = 0xffffffff;\n                local_c8 = 0xffffffff;\n                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;\n                if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }\n              }" ({ "{") (expression_statement "uVar41 = FUN_0003db30();" (assignment_expression "uVar41 = FUN_0003db30()" (identifier "uVar41") (= "=") (call_expression "FUN_0003db30()" (identifier "FUN_0003db30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_58[2] != (int *)0x0) {\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" (if "if") (parenthesized_expression "(local_58[2] != (int *)0x0)" (( "(") (binary_expression "local_58[2] != (int *)0x0" (subscript_expression "local_58[2]" (identifier "local_58") ([ "[") (number_literal "2") (] "]")) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  uVar42 = FUN_0003db30();\n                  uVar41 = uVar42 | uVar41;\n                }" ({ "{") (expression_statement "uVar42 = FUN_0003db30();" (assignment_expression "uVar42 = FUN_0003db30()" (identifier "uVar42") (= "=") (call_expression "FUN_0003db30()" (identifier "FUN_0003db30") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar41 = uVar42 | uVar41;" (assignment_expression "uVar41 = uVar42 | uVar41" (identifier "uVar41") (= "=") (binary_expression "uVar42 | uVar41" (identifier "uVar42") (| "|") (identifier "uVar41"))) (; ";")) (} "}"))) (expression_statement "local_b4 = (int *)(uVar41 >> 0x20);" (assignment_expression "local_b4 = (int *)(uVar41 >> 0x20)" (identifier "local_b4") (= "=") (cast_expression "(int *)(uVar41 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar41 >> 0x20)" (( "(") (binary_expression "uVar41 >> 0x20" (identifier "uVar41") (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "local_bc = (uint)uVar41;" (assignment_expression "local_bc = (uint)uVar41" (identifier "local_bc") (= "=") (cast_expression "(uint)uVar41" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar41"))) (; ";")) (expression_statement "local_cc = 0xffffffff;" (assignment_expression "local_cc = 0xffffffff" (identifier "local_cc") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_c8 = 0xffffffff;" (assignment_expression "local_c8 = 0xffffffff" (identifier "local_c8") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;" (assignment_expression "iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1" (identifier "iVar12") (= "=") (binary_expression "*(byte *)((int)local_d0 + 0x2e) - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(byte *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (0 < iVar12) {\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" (if "if") (parenthesized_expression "(0 < iVar12)" (( "(") (binary_expression "0 < iVar12" (number_literal "0") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n                  do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);\n                }" ({ "{") (do_statement "do {\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  } while (iVar12 != 0);" (do "do") (compound_statement "{\n                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];\n                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }\nLAB_000a17a8:\n                    iVar12 = iVar12 + -1;\n                  }" ({ "{") (expression_statement "iVar38 = local_d0[iVar12 * 0x11 + 0xc9];" (assignment_expression "iVar38 = local_d0[iVar12 * 0x11 + 0xc9]" (identifier "iVar38") (= "=") (subscript_expression "local_d0[iVar12 * 0x11 + 0xc9]" (identifier "local_d0") ([ "[") (binary_expression "iVar12 * 0x11 + 0xc9" (binary_expression "iVar12 * 0x11" (identifier "iVar12") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0xc9")) (] "]"))) (; ";")) (if_statement "if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" (if "if") (parenthesized_expression "(((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))))" (( "(") (binary_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0) &&\n                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" (parenthesized_expression "((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0)" (( "(") (binary_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)\n                         != 0" (parenthesized_expression "(*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)" (( "(") (binary_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8" (pointer_expression "*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" (* "*") (cast_expression "(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44)" (( "(") (binary_expression "local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "local_d0[1] + 0x2c" (subscript_expression "local_d0[1]" (identifier "local_d0") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x2c")) (+ "+") (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar38 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x10)" (( "(") (binary_expression "iVar38 + 0x10" (identifier "iVar38") (+ "+") (number_literal "0x10")) () ")")))) (* "*") (number_literal "0x44"))) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))" (( "(") (parenthesized_expression "((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0))" (( "(") (binary_expression "(uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" (binary_expression "(uVar29 & 0x100) != 0" (parenthesized_expression "(uVar29 & 0x100)" (( "(") (binary_expression "uVar29 & 0x100" (identifier "uVar29") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)(iVar38 + 0x25) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(iVar38 + 0x25) & 0x10) != 0" (parenthesized_expression "(*(byte *)(iVar38 + 0x25) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar38 + 0x25) & 0x10" (pointer_expression "*(byte *)(iVar38 + 0x25)" (* "*") (cast_expression "(byte *)(iVar38 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x25)" (( "(") (binary_expression "iVar38 + 0x25" (identifier "iVar38") (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                      uVar11 = *(uint *)(iVar38 + 8);\n                      uVar13 = *(uint *)(iVar38 + 0xc);\n                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }\n                    }" ({ "{") (expression_statement "uVar11 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar11 = *(uint *)(iVar38 + 8)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(iVar38 + 8)" (* "*") (cast_expression "(uint *)(iVar38 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 8)" (( "(") (binary_expression "iVar38 + 8" (identifier "iVar38") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0xc)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar38 + 0xc)" (* "*") (cast_expression "(uint *)(iVar38 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0xc)" (( "(") (binary_expression "iVar38 + 0xc" (identifier "iVar38") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" (if "if") (parenthesized_expression "(((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0)" (( "(") (binary_expression "((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0" (binary_expression "((uint)local_b4 & uVar13) == 0" (parenthesized_expression "((uint)local_b4 & uVar13)" (( "(") (binary_expression "(uint)local_b4 & uVar13" (cast_expression "(uint)local_b4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_b4")) (& "&") (identifier "uVar13")) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(local_bc & uVar11) == 0" (parenthesized_expression "(local_bc & uVar11)" (( "(") (binary_expression "local_bc & uVar11" (identifier "local_bc") (& "&") (identifier "uVar11")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n                        piVar17 = (int *)local_58[1][5];\n                        piVar34 = piVar17 + local_58[1][3] * 0xc;\n                        if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }\n                        local_c8 = ~uVar13 & local_c8;\n                        local_cc = ~uVar11 & local_cc;\n                        bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }\n                        local_a0 = local_a0 + -1;\n                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;\n                      }" ({ "{") (expression_statement "piVar17 = (int *)local_58[1][5];" (assignment_expression "piVar17 = (int *)local_58[1][5]" (identifier "piVar17") (= "=") (cast_expression "(int *)local_58[1][5]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_58[1][5]" (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]")) ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "piVar34 = piVar17 + local_58[1][3] * 0xc;" (assignment_expression "piVar34 = piVar17 + local_58[1][3] * 0xc" (identifier "piVar34") (= "=") (binary_expression "piVar17 + local_58[1][3] * 0xc" (identifier "piVar17") (+ "+") (binary_expression "local_58[1][3] * 0xc" (subscript_expression "local_58[1][3]" (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]")) ([ "[") (number_literal "3") (] "]")) (* "*") (number_literal "0xc")))) (; ";")) (if_statement "if (piVar17 < piVar34) {\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" (if "if") (parenthesized_expression "(piVar17 < piVar34)" (( "(") (binary_expression "piVar17 < piVar34" (identifier "piVar17") (< "<") (identifier "piVar34")) () ")")) (compound_statement "{\n                          piVar23 = piVar17;\n                          do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);\n                          while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }\n                        }" ({ "{") (expression_statement "piVar23 = piVar17;" (assignment_expression "piVar23 = piVar17" (identifier "piVar23") (= "=") (identifier "piVar17")) (; ";")) (do_statement "do {\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          } while (piVar23 < piVar34);" (do "do") (compound_statement "{\n                            uVar25 = uVar11;\n                            uVar43 = uVar13;\n                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }\n                            piVar23 = piVar23 + 0xc;\n                          }" ({ "{") (expression_statement "uVar25 = uVar11;" (assignment_expression "uVar25 = uVar11" (identifier "uVar25") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "uVar43 = uVar13;" (assignment_expression "uVar43 = uVar13" (identifier "uVar43") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))) {\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" (if "if") (parenthesized_expression "(((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))))" (( "(") (binary_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&\n                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" (parenthesized_expression "((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0)" (( "(") (binary_expression "(piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0" (binary_expression "(piVar23[0xb] & uVar13) != 0" (parenthesized_expression "(piVar23[0xb] & uVar13)" (( "(") (binary_expression "piVar23[0xb] & uVar13" (subscript_expression "piVar23[0xb]" (identifier "piVar23") ([ "[") (number_literal "0xb") (] "]")) (& "&") (identifier "uVar13")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(piVar23[10] & uVar11) != 0" (parenthesized_expression "(piVar23[10] & uVar11)" (( "(") (binary_expression "piVar23[10] & uVar11" (subscript_expression "piVar23[10]" (identifier "piVar23") ([ "[") (number_literal "10") (] "]")) (& "&") (identifier "uVar11")) () ")")) (!= "!=") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))))" (( "(") (parenthesized_expression "((*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )))" (( "(") (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0 ||\n                                ((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" (binary_expression "(*(byte *)(*piVar23 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar23 + 4) & 1)" (( "(") (binary_expression "*(byte *)(*piVar23 + 4) & 1" (pointer_expression "*(byte *)(*piVar23 + 4)" (* "*") (cast_expression "(byte *)(*piVar23 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar23 + 4)" (( "(") (binary_expression "*piVar23 + 4" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         ))" (( "(") (binary_expression "(int)*(short *)(*piVar23 + 0x26) !=\n                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (cast_expression "(int)*(short *)(*piVar23 + 0x26)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*piVar23 + 0x26)" (* "*") (cast_expression "(short *)(*piVar23 + 0x26)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar23 + 0x26)" (( "(") (binary_expression "*piVar23 + 0x26" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (+ "+") (number_literal "0x26")) () ")"))))) (!= "!=") (pointer_expression "*(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (* "*") (cast_expression "(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30\n                                         )" (( "(") (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30" (binary_expression "local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44" (subscript_expression "local_d0[1]" (identifier "local_d0") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "(uint)*(byte *)(iVar38 + 0x10) * 0x44" (binary_expression "(uint)*(byte *)(iVar38 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar38 + 0x10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x10)" (( "(") (binary_expression "iVar38 + 0x10" (identifier "iVar38") (+ "+") (number_literal "0x10")) () ")")))) (* "*") (number_literal "0x44"))) (+ "+") (number_literal "0x30")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                              if (piVar23 < piVar34) goto LAB_000a17a8;\n                              break;\n                            }" ({ "{") (if_statement "if (piVar23 < piVar34) goto LAB_000a17a8;" (if "if") (parenthesized_expression "(piVar23 < piVar34)" (( "(") (binary_expression "piVar23 < piVar34" (identifier "piVar23") (< "<") (identifier "piVar34")) () ")")) (goto_statement "goto LAB_000a17a8;" (goto "goto") (statement_identifier "LAB_000a17a8") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "piVar23 = piVar23 + 0xc;" (assignment_expression "piVar23 = piVar23 + 0xc" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 0xc" (identifier "piVar23") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar23 < piVar34)" (( "(") (binary_expression "piVar23 < piVar34" (identifier "piVar23") (< "<") (identifier "piVar34")) () ")")) (; ";")) (while_statement "while( true ) {\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }\n                            piVar17 = piVar17 + 0xc;\n                            if (piVar34 <= piVar17) break;\n                            uVar25 = *(uint *)(iVar38 + 8);\n                            uVar43 = *(uint *)(iVar38 + 0xc);\n                          }" ({ "{") (if_statement "if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" (if "if") (parenthesized_expression "((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0)" (( "(") (binary_expression "(uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0" (binary_expression "(uVar43 & piVar17[0xb]) != 0" (parenthesized_expression "(uVar43 & piVar17[0xb])" (( "(") (binary_expression "uVar43 & piVar17[0xb]" (identifier "uVar43") (& "&") (subscript_expression "piVar17[0xb]" (identifier "piVar17") ([ "[") (number_literal "0xb") (] "]"))) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uVar25 & piVar17[10]) != 0" (parenthesized_expression "(uVar25 & piVar17[10])" (( "(") (binary_expression "uVar25 & piVar17[10]" (identifier "uVar25") (& "&") (subscript_expression "piVar17[10]" (identifier "piVar17") ([ "[") (number_literal "10") (] "]"))) () ")")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;\n                            }" ({ "{") (expression_statement "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;" (assignment_expression "*(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" (* "*") (cast_expression "(ushort *)((int)piVar17 + 10U)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 10U)" (( "(") (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "10U")) () ")")))) (= "=") (binary_expression "*(ushort *)((int)piVar17 + 10U) | 4" (pointer_expression "*(ushort *)((int)piVar17 + 10U)" (* "*") (cast_expression "(ushort *)((int)piVar17 + 10U)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 10U)" (( "(") (binary_expression "(int)piVar17 + 10U" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "10U")) () ")")))) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "piVar17 = piVar17 + 0xc;" (assignment_expression "piVar17 = piVar17 + 0xc" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 0xc" (identifier "piVar17") (+ "+") (number_literal "0xc"))) (; ";")) (if_statement "if (piVar34 <= piVar17) break;" (if "if") (parenthesized_expression "(piVar34 <= piVar17)" (( "(") (binary_expression "piVar34 <= piVar17" (identifier "piVar34") (<= "<=") (identifier "piVar17")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar25 = *(uint *)(iVar38 + 8);" (assignment_expression "uVar25 = *(uint *)(iVar38 + 8)" (identifier "uVar25") (= "=") (pointer_expression "*(uint *)(iVar38 + 8)" (* "*") (cast_expression "(uint *)(iVar38 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 8)" (( "(") (binary_expression "iVar38 + 8" (identifier "iVar38") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar43 = *(uint *)(iVar38 + 0xc);" (assignment_expression "uVar43 = *(uint *)(iVar38 + 0xc)" (identifier "uVar43") (= "=") (pointer_expression "*(uint *)(iVar38 + 0xc)" (* "*") (cast_expression "(uint *)(iVar38 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0xc)" (( "(") (binary_expression "iVar38 + 0xc" (identifier "iVar38") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_c8 = ~uVar13 & local_c8;" (assignment_expression "local_c8 = ~uVar13 & local_c8" (identifier "local_c8") (= "=") (binary_expression "~uVar13 & local_c8" (unary_expression "~uVar13" (~ "~") (identifier "uVar13")) (& "&") (identifier "local_c8"))) (; ";")) (expression_statement "local_cc = ~uVar11 & local_cc;" (assignment_expression "local_cc = ~uVar11 & local_cc" (identifier "local_cc") (= "=") (binary_expression "~uVar11 & local_cc" (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) (& "&") (identifier "local_cc"))) (; ";")) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(byte *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")"))))) (; ";")) (if_statement "if (bVar8 - 1 != iVar12) {\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" (if "if") (parenthesized_expression "(bVar8 - 1 != iVar12)" (( "(") (binary_expression "bVar8 - 1 != iVar12" (binary_expression "bVar8 - 1" (identifier "bVar8") (- "-") (number_literal "1")) (!= "!=") (identifier "iVar12")) () ")")) (compound_statement "{\n                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);\n                          bVar8 = *(byte *)((int)local_d0 + 0x2e);\n                        }" ({ "{") (expression_statement "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44);" (call_expression "memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" (identifier "memmove") (argument_list "(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,\n                                  ((bVar8 - 1) - iVar12) * 0x44)" (( "(") (binary_expression "local_b8 + iVar12 * 0x11" (identifier "local_b8") (+ "+") (binary_expression "iVar12 * 0x11" (identifier "iVar12") (* "*") (number_literal "0x11"))) (, ",") (binary_expression "local_d0 + iVar12 * 0x11 + 0xcc" (binary_expression "local_d0 + iVar12 * 0x11" (identifier "local_d0") (+ "+") (binary_expression "iVar12 * 0x11" (identifier "iVar12") (* "*") (number_literal "0x11"))) (+ "+") (number_literal "0xcc")) (, ",") (binary_expression "((bVar8 - 1) - iVar12) * 0x44" (parenthesized_expression "((bVar8 - 1) - iVar12)" (( "(") (binary_expression "(bVar8 - 1) - iVar12" (parenthesized_expression "(bVar8 - 1)" (( "(") (binary_expression "bVar8 - 1" (identifier "bVar8") (- "-") (number_literal "1")) () ")")) (- "-") (identifier "iVar12")) () ")")) (* "*") (number_literal "0x44")) () ")"))) (; ";")) (expression_statement "bVar8 = *(byte *)((int)local_d0 + 0x2e);" (assignment_expression "bVar8 = *(byte *)((int)local_d0 + 0x2e)" (identifier "bVar8") (= "=") (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(byte *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")"))))) (; ";")) (} "}"))) (expression_statement "local_a0 = local_a0 + -1;" (assignment_expression "local_a0 = local_a0 + -1" (identifier "local_a0") (= "=") (binary_expression "local_a0 + -1" (identifier "local_a0") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;" (assignment_expression "*(byte *)((int)local_d0 + 0x2e) = bVar8 - 1" (pointer_expression "*(byte *)((int)local_d0 + 0x2e)" (* "*") (cast_expression "(byte *)((int)local_d0 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x2e)" (( "(") (binary_expression "(int)local_d0 + 0x2e" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x2e")) () ")")))) (= "=") (binary_expression "bVar8 - 1" (identifier "bVar8") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000a17a8:\n                    iVar12 = iVar12 + -1;" (statement_identifier "LAB_000a17a8") (: ":") (expression_statement "iVar12 = iVar12 + -1;" (assignment_expression "iVar12 = iVar12 + -1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + -1" (identifier "iVar12") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "uVar40 = CONCAT44(local_c8,local_cc);" (assignment_expression "uVar40 = CONCAT44(local_c8,local_cc)" (identifier "uVar40") (= "=") (call_expression "CONCAT44(local_c8,local_cc)" (identifier "CONCAT44") (argument_list "(local_c8,local_cc)" (( "(") (identifier "local_c8") (, ",") (identifier "local_cc") () ")")))) (; ";")) (expression_statement "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];" (assignment_expression "*(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" (* "*") (cast_expression "(int *)(*local_d0 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_d0 + 0x80)" (( "(") (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" (* "*") (identifier "local_d0")) (+ "+") (number_literal "0x80")) () ")")))) (= "=") (binary_expression "*(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12]" (pointer_expression "*(int *)(*local_d0 + 0x80)" (* "*") (cast_expression "(int *)(*local_d0 + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*local_d0 + 0x80)" (( "(") (binary_expression "*local_d0 + 0x80" (pointer_expression "*local_d0" (* "*") (identifier "local_d0")) (+ "+") (number_literal "0x80")) () ")")))) (+ "+") (cast_expression "(int)(short)local_d0[0x12]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(short)local_d0[0x12]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "local_d0[0x12]" (identifier "local_d0") ([ "[") (number_literal "0x12") (] "]")))))) (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar29 & 4) != 0) {\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" (if "if") (parenthesized_expression "((uVar29 & 4) != 0)" (( "(") (binary_expression "(uVar29 & 4) != 0" (parenthesized_expression "(uVar29 & 4)" (( "(") (binary_expression "uVar29 & 4" (identifier "uVar29") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);\n              if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }\n              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;\n              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }\n            }" ({ "{") (expression_statement "uVar11 = *(uint *)(local_d0[0xc9] + 0x24);" (assignment_expression "uVar11 = *(uint *)(local_d0[0xc9] + 0x24)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" (* "*") (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0[0xc9] + 0x24)" (( "(") (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" (identifier "local_d0") ([ "[") (number_literal "0xc9") (] "]")) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if ((uVar11 & 0x1000) == 0) {\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }\n              else {\n                uVar24 = 1;\n              }" (if "if") (parenthesized_expression "((uVar11 & 0x1000) == 0)" (( "(") (binary_expression "(uVar11 & 0x1000) == 0" (parenthesized_expression "(uVar11 & 0x1000)" (( "(") (binary_expression "uVar11 & 0x1000" (identifier "uVar11") (& "&") (number_literal "0x1000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;\n                uVar24 = 2;\n              }" ({ "{") (if_statement "if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;" (if "if") (parenthesized_expression "((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))))" (( "(") (binary_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||\n                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" (parenthesized_expression "(((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0))" (( "(") (binary_expression "((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)" (parenthesized_expression "((uVar29 & 8) == 0)" (( "(") (binary_expression "(uVar29 & 8) == 0" (parenthesized_expression "(uVar29 & 8)" (( "(") (binary_expression "uVar29 & 8" (identifier "uVar29") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(int *)(piVar30[6] + 0x38) != 0)" (( "(") (binary_expression "*(int *)(piVar30[6] + 0x38) != 0" (pointer_expression "*(int *)(piVar30[6] + 0x38)" (* "*") (cast_expression "(int *)(piVar30[6] + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar30[6] + 0x38)" (( "(") (binary_expression "piVar30[6] + 0x38" (subscript_expression "piVar30[6]" (identifier "piVar30") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))" (( "(") (parenthesized_expression "((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0))" (( "(") (binary_expression "(uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)" (binary_expression "(uVar11 & 0x2000) != 0" (parenthesized_expression "(uVar11 & 0x2000)" (( "(") (binary_expression "uVar11 & 0x2000" (identifier "uVar11") (& "&") (number_literal "0x2000")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((uVar29 & 0x10) == 0)" (( "(") (binary_expression "(uVar29 & 0x10) == 0" (parenthesized_expression "(uVar29 & 0x10)" (( "(") (binary_expression "uVar29 & 0x10" (identifier "uVar29") (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_000a02e0;" (goto "goto") (statement_identifier "LAB_000a02e0") (; ";"))) (expression_statement "uVar24 = 2;" (assignment_expression "uVar24 = 2" (identifier "uVar24") (= "=") (number_literal "2")) (; ";")) (} "}")) (else_clause "else {\n                uVar24 = 1;\n              }" (else "else") (compound_statement "{\n                uVar24 = 1;\n              }" ({ "{") (expression_statement "uVar24 = 1;" (assignment_expression "uVar24 = 1" (identifier "uVar24") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)((int)local_d0 + 0x31) = uVar24;" (assignment_expression "*(undefined1 *)((int)local_d0 + 0x31) = uVar24" (pointer_expression "*(undefined1 *)((int)local_d0 + 0x31)" (* "*") (cast_expression "(undefined1 *)((int)local_d0 + 0x31)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x31)" (( "(") (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x31")) () ")")))) (= "=") (identifier "uVar24")) (; ";")) (if_statement "if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" (if "if") (parenthesized_expression "(((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0))" (( "(") (binary_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)" (parenthesized_expression "((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20) == 0" (parenthesized_expression "(*(byte *)(piVar30[6] + 0x24) & 0x20)" (( "(") (binary_expression "*(byte *)(piVar30[6] + 0x24) & 0x20" (pointer_expression "*(byte *)(piVar30[6] + 0x24)" (* "*") (cast_expression "(byte *)(piVar30[6] + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar30[6] + 0x24)" (( "(") (binary_expression "piVar30[6] + 0x24" (subscript_expression "piVar30[6]" (identifier "piVar30") ([ "[") (number_literal "6") (] "]")) (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar11 & 0x40) != 0)" (( "(") (binary_expression "(uVar11 & 0x40) != 0" (parenthesized_expression "(uVar11 & 0x40)" (( "(") (binary_expression "uVar11 & 0x40" (identifier "uVar11") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                bVar8 = 0;\n                if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }\n                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;\n              }" ({ "{") (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar29 & 8) != 0) {\n                  bVar8 = 8;\n                }" (if "if") (parenthesized_expression "((uVar29 & 8) != 0)" (( "(") (binary_expression "(uVar29 & 8) != 0" (parenthesized_expression "(uVar29 & 8)" (( "(") (binary_expression "uVar29 & 8" (identifier "uVar29") (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  bVar8 = 8;\n                }" ({ "{") (expression_statement "bVar8 = 8;" (assignment_expression "bVar8 = 8" (identifier "bVar8") (= "=") (number_literal "8")) (; ";")) (} "}"))) (expression_statement "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;" (assignment_expression "*(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf" (pointer_expression "*(uint *)(local_d0[0xc9] + 0x24)" (* "*") (cast_expression "(uint *)(local_d0[0xc9] + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0[0xc9] + 0x24)" (( "(") (binary_expression "local_d0[0xc9] + 0x24" (subscript_expression "local_d0[0xc9]" (identifier "local_d0") ([ "[") (number_literal "0xc9") (] "]")) (+ "+") (number_literal "0x24")) () ")")))) (= "=") (binary_expression "uVar11 & 0xffffffbf" (identifier "uVar11") (& "&") (number_literal "0xffffffbf"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000a02e0:\n            if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" (statement_identifier "LAB_000a02e0") (: ":") (if_statement "if (local_a0 < 1) {\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }\n            else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" (if "if") (parenthesized_expression "(local_a0 < 1)" (( "(") (binary_expression "local_a0 < 1" (identifier "local_a0") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;\n            }" ({ "{") (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" (identifier "local_d0") ([ "[") (number_literal "0xe") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a0bf2;" (goto "goto") (statement_identifier "LAB_000a0bf2") (; ";"))) (} "}")) (else_clause "else {\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" (else "else") (compound_statement "{\n              piVar17 = local_b8;\n              do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);\n              local_d0[0xe] = *(int *)(iVar3 + 0x68);\n              if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }\n            }" ({ "{") (expression_statement "piVar17 = local_b8;" (assignment_expression "piVar17 = local_b8" (identifier "piVar17") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);" (do "do") (compound_statement "{\n                uVar11 = (uint)*(byte *)(piVar17 + 9);\n                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }\n                iVar38 = piVar17[0xe];\n                uVar13 = *(uint *)(iVar38 + 0x24);\n                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }\n                if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }\n                if (-1 < iVar12) {\n                  FUN_000893e0();\n                }\n                piVar17 = piVar17 + 0x11;\n              }" ({ "{") (expression_statement "uVar11 = (uint)*(byte *)(piVar17 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(piVar17 + 9)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(piVar17 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(piVar17 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17 + 9)" (( "(") (binary_expression "piVar17 + 9" (identifier "piVar17") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar30[uVar11 * 0x11 + 6]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "6")) (] "]")))) (; ";")) (if_statement "if (puVar22[0x12] == 0) {\n                  iVar12 = -1000000;\n                }\n                else {\n                  iVar12 = FUN_000304d0();\n                }" (if "if") (parenthesized_expression "(puVar22[0x12] == 0)" (( "(") (binary_expression "puVar22[0x12] == 0" (subscript_expression "puVar22[0x12]" (identifier "puVar22") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar12 = -1000000;\n                }" ({ "{") (expression_statement "iVar12 = -1000000;" (assignment_expression "iVar12 = -1000000" (identifier "iVar12") (= "=") (number_literal "-1000000")) (; ";")) (} "}")) (else_clause "else {\n                  iVar12 = FUN_000304d0();\n                }" (else "else") (compound_statement "{\n                  iVar12 = FUN_000304d0();\n                }" ({ "{") (expression_statement "iVar12 = FUN_000304d0();" (assignment_expression "iVar12 = FUN_000304d0()" (identifier "iVar12") (= "=") (call_expression "FUN_000304d0()" (identifier "FUN_000304d0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar38 = piVar17[0xe];" (assignment_expression "iVar38 = piVar17[0xe]" (identifier "iVar38") (= "=") (subscript_expression "piVar17[0xe]" (identifier "piVar17") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" (if "if") (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0))" (( "(") (binary_expression "((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(puVar22 + 9) & 2) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 2)" (( "(") (binary_expression "*(byte *)(puVar22 + 9) & 2" (pointer_expression "*(byte *)(puVar22 + 9)" (* "*") (cast_expression "(byte *)(puVar22 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 9)" (( "(") (binary_expression "puVar22 + 9" (identifier "puVar22") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(puVar22[3] == 0)" (( "(") (binary_expression "puVar22[3] == 0" (subscript_expression "puVar22[3]" (identifier "puVar22") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                  if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }\n                }" ({ "{") (if_statement "if ((uVar13 & 0x400) == 0) {\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }\n                  else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" (if "if") (parenthesized_expression "((uVar13 & 0x400) == 0)" (( "(") (binary_expression "(uVar13 & 0x400) == 0" (parenthesized_expression "(uVar13 & 0x400)" (( "(") (binary_expression "uVar13 & 0x400" (identifier "uVar13") (& "&") (number_literal "0x400")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }\n                  }" ({ "{") (if_statement "if (puVar22[0xe] == 0) {\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" (if "if") (parenthesized_expression "(puVar22[0xe] == 0)" (( "(") (binary_expression "puVar22[0xe] == 0" (subscript_expression "puVar22[0xe]" (identifier "puVar22") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                    }" ({ "{") (if_statement "if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }\n                      else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" (if "if") (parenthesized_expression "(((uVar13 & 0x40) == 0) && (uVar6 == 0))" (( "(") (binary_expression "((uVar13 & 0x40) == 0) && (uVar6 == 0)" (parenthesized_expression "((uVar13 & 0x40) == 0)" (( "(") (binary_expression "(uVar13 & 0x40) == 0" (parenthesized_expression "(uVar13 & 0x40)" (( "(") (binary_expression "uVar13 & 0x40" (identifier "uVar13") (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                        uVar15 = 0x6d;\n                        if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }\n                        FUN_0005c7e0(puVar22,uVar15);\n                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }\n                        if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" ({ "{") (expression_statement "uVar15 = 0x6d;" (assignment_expression "uVar15 = 0x6d" (identifier "uVar15") (= "=") (number_literal "0x6d")) (; ";")) (if_statement "if (*(char *)((int)local_d0 + 0x31) != '\0') {\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" (if "if") (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) != '\0')" (( "(") (binary_expression "*(char *)((int)local_d0 + 0x31) != '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" (* "*") (cast_expression "(char *)((int)local_d0 + 0x31)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x31)" (( "(") (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x31")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];\n                          uVar15 = 0x6e;\n                        }" ({ "{") (expression_statement "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_d0[6] = piVar30[uVar11 * 0x11 + 0xc]" (subscript_expression "local_d0[6]" (identifier "local_d0") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0xc")) (] "]"))) (; ";")) (expression_statement "uVar15 = 0x6e;" (assignment_expression "uVar15 = 0x6e" (identifier "uVar15") (= "=") (number_literal "0x6e")) (; ";")) (} "}"))) (expression_statement "FUN_0005c7e0(puVar22,uVar15);" (call_expression "FUN_0005c7e0(puVar22,uVar15)" (identifier "FUN_0005c7e0") (argument_list "(puVar22,uVar15)" (( "(") (identifier "puVar22") (, ",") (identifier "uVar15") () ")"))) (; ";")) (if_statement "if (((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" (if "if") (parenthesized_expression "(((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0))" (( "(") (binary_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&\n                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)" (parenthesized_expression "((*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40))" (( "(") (binary_expression "(*(char *)((int)local_d0 + 0x31) == '\0') &&\n                            (*(short *)((int)puVar22 + 0x2a) < 0x40)" (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" (( "(") (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" (* "*") (cast_expression "(char *)((int)local_d0 + 0x31)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x31)" (( "(") (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x31")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) < 0x40)" (( "(") (binary_expression "*(short *)((int)puVar22 + 0x2a) < 0x40" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")")))) (< "<") (number_literal "0x40")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" (* "*") (cast_expression "(byte *)(puVar22 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 9)" (( "(") (binary_expression "puVar22 + 9" (identifier "puVar22") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];\n                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];\n                          if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }\n                          FUN_000370b0(0xfffffffd);\n                        }" ({ "{") (expression_statement "uVar13 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar13 = piVar30[uVar11 * 0x11 + 0xf]" (identifier "uVar13") (= "=") (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0xf")) (] "]"))) (; ";")) (expression_statement "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];" (assignment_expression "uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1]" (identifier "uVar25") (= "=") (subscript_expression "(piVar30 + uVar11 * 0x11 + 0xf)[1]" (parenthesized_expression "(piVar30 + uVar11 * 0x11 + 0xf)" (( "(") (binary_expression "piVar30 + uVar11 * 0x11 + 0xf" (binary_expression "piVar30 + uVar11 * 0x11" (identifier "piVar30") (+ "+") (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11"))) (+ "+") (number_literal "0xf")) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar25 != 0 || uVar13 != 0) {\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" (if "if") (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" (( "(") (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" (identifier "uVar25") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n                            do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);\n                          }" ({ "{") (do_statement "do {\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            } while (uVar25 != 0 || uVar13 != 0);" (do "do") (compound_statement "{\n                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;\n                              uVar25 = uVar25 >> 1;\n                            }" ({ "{") (expression_statement "uVar13 = uVar13 >> 1 | uVar25 << 0x1f;" (assignment_expression "uVar13 = uVar13 >> 1 | uVar25 << 0x1f" (identifier "uVar13") (= "=") (binary_expression "uVar13 >> 1 | uVar25 << 0x1f" (binary_expression "uVar13 >> 1" (identifier "uVar13") (>> ">>") (number_literal "1")) (| "|") (binary_expression "uVar25 << 0x1f" (identifier "uVar25") (<< "<<") (number_literal "0x1f")))) (; ";")) (expression_statement "uVar25 = uVar25 >> 1;" (assignment_expression "uVar25 = uVar25 >> 1" (identifier "uVar25") (= "=") (binary_expression "uVar25 >> 1" (identifier "uVar25") (>> ">>") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar25 != 0 || uVar13 != 0)" (( "(") (binary_expression "uVar25 != 0 || uVar13 != 0" (binary_expression "uVar25 != 0" (identifier "uVar25") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_000370b0(0xfffffffd);" (call_expression "FUN_000370b0(0xfffffffd)" (identifier "FUN_000370b0") (argument_list "(0xfffffffd)" (( "(") (number_literal "0xfffffffd") () ")"))) (; ";")) (} "}"))) (if_statement "if (0 < *(int *)(iVar3 + 0x68)) {\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" (( "(") (binary_expression "0 < *(int *)(iVar3 + 0x68)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")"))))) () ")")) (compound_statement "{\n                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;\n                        }" ({ "{") (expression_statement "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8;" (assignment_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)\n                               = (ushort)bVar8" (pointer_expression "*(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" (* "*") (cast_expression "(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)" (( "(") (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100)" (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")")))) (* "*") (number_literal "0x14")) (+ "+") (pointer_expression "*(int *)(iVar3 + 100)" (* "*") (cast_expression "(int *)(iVar3 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 100)" (( "(") (binary_expression "iVar3 + 100" (identifier "iVar3") (+ "+") (number_literal "100")) () ")"))))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (cast_expression "(ushort)bVar8" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (identifier "bVar8"))) (; ";")) (} "}"))) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" (else "else") (compound_statement "{\n                        FUN_00049420(0,*puVar22);\n                        uVar13 = *(uint *)(iVar38 + 0x24);\n                      }" ({ "{") (expression_statement "FUN_00049420(0,*puVar22);" (call_expression "FUN_00049420(0,*puVar22)" (identifier "FUN_00049420") (argument_list "(0,*puVar22)" (( "(") (number_literal "0") (, ",") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) () ")"))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" (else "else") (compound_statement "{\n                    for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }\n                    FUN_000497a0(0,0);\n                    FUN_000370b0(0xfffffff4);\n                    uVar13 = *(uint *)(iVar38 + 0x24);\n                  }" ({ "{") (for_statement "for (piVar34 = (int *)puVar22[0x10];\n                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])\n                    {\n                    }" (for "for") (( "(") (assignment_expression "piVar34 = (int *)puVar22[0x10]" (identifier "piVar34") (= "=") (cast_expression "(int *)puVar22[0x10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar22[0x10]" (identifier "puVar22") ([ "[") (number_literal "0x10") (] "]")))) (; ";") (parenthesized_expression "(piVar34 != (int *)0x0 && (iVar4 != *piVar34))" (( "(") (binary_expression "piVar34 != (int *)0x0 && (iVar4 != *piVar34)" (binary_expression "piVar34 != (int *)0x0" (identifier "piVar34") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 != *piVar34)" (( "(") (binary_expression "iVar4 != *piVar34" (identifier "iVar4") (!= "!=") (pointer_expression "*piVar34" (* "*") (identifier "piVar34"))) () ")"))) () ")")) (; ";") (assignment_expression "piVar34 = (int *)piVar34[6]" (identifier "piVar34") (= "=") (cast_expression "(int *)piVar34[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar34[6]" (identifier "piVar34") ([ "[") (number_literal "6") (] "]")))) () ")") (compound_statement "{\n                    }" ({ "{") (} "}"))) (expression_statement "FUN_000497a0(0,0);" (call_expression "FUN_000497a0(0,0)" (identifier "FUN_000497a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_000370b0(0xfffffff4);" (call_expression "FUN_000370b0(0xfffffff4)" (identifier "FUN_000370b0") (argument_list "(0xfffffff4)" (( "(") (number_literal "0xfffffff4") () ")"))) (; ";")) (expression_statement "uVar13 = *(uint *)(iVar38 + 0x24);" (assignment_expression "uVar13 = *(uint *)(iVar38 + 0x24)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((uVar13 & 0x200) != 0) {\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" (if "if") (parenthesized_expression "((uVar13 & 0x200) != 0)" (( "(") (binary_expression "(uVar13 & 0x200) != 0" (parenthesized_expression "(uVar13 & 0x200)" (( "(") (binary_expression "uVar13 & 0x200" (identifier "uVar13") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar16 = *(int *)(iVar38 + 0x20);\n                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }\n                }" ({ "{") (expression_statement "iVar16 = *(int *)(iVar38 + 0x20);" (assignment_expression "iVar16 = *(int *)(iVar38 + 0x20)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar38 + 0x20)" (* "*") (cast_expression "(int *)(iVar38 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x20)" (( "(") (binary_expression "iVar38 + 0x20" (identifier "iVar38") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }\n                  else {\n                    piVar17[2] = piVar17[1];\n                  }" (if "if") (parenthesized_expression "((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0))" (( "(") (binary_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)" (parenthesized_expression "(((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2))" (( "(") (binary_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0) ||\n                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)" (parenthesized_expression "((*(byte *)(puVar22 + 9) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)(puVar22 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)(puVar22 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)(puVar22 + 9) & 0x20" (pointer_expression "*(byte *)(puVar22 + 9)" (* "*") (cast_expression "(byte *)(puVar22 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar22 + 9)" (( "(") (binary_expression "puVar22 + 9" (identifier "puVar22") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(iVar16 + 0x37) & 3) != 2)" (( "(") (binary_expression "(*(byte *)(iVar16 + 0x37) & 3) != 2" (parenthesized_expression "(*(byte *)(iVar16 + 0x37) & 3)" (( "(") (binary_expression "*(byte *)(iVar16 + 0x37) & 3" (pointer_expression "*(byte *)(iVar16 + 0x37)" (* "*") (cast_expression "(byte *)(iVar16 + 0x37)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x37)" (( "(") (binary_expression "iVar16 + 0x37" (identifier "iVar16") (+ "+") (number_literal "0x37")) () ")")))) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "2")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }\n                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);\n                    FUN_0005c7b0();\n                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }\n                  }" ({ "{") (if_statement "if (*(char *)((int)local_d0 + 0x31) == '\0') {\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }\n                    else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" (if "if") (parenthesized_expression "(*(char *)((int)local_d0 + 0x31) == '\0')" (( "(") (binary_expression "*(char *)((int)local_d0 + 0x31) == '\0'" (pointer_expression "*(char *)((int)local_d0 + 0x31)" (* "*") (cast_expression "(char *)((int)local_d0 + 0x31)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x31)" (( "(") (binary_expression "(int)local_d0 + 0x31" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x31")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }\n                    }" ({ "{") (if_statement "if ((uVar6 == 0) || (param_4 == 0)) {\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }\n                      else {\n                        piVar17[2] = param_4;\n                      }" (if "if") (parenthesized_expression "((uVar6 == 0) || (param_4 == 0))" (( "(") (binary_expression "(uVar6 == 0) || (param_4 == 0)" (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                        iVar14 = piVar10[10];\n                        piVar10[10] = iVar14 + 1;\n                        piVar17[2] = iVar14;\n                      }" ({ "{") (expression_statement "iVar14 = piVar10[10];" (assignment_expression "iVar14 = piVar10[10]" (identifier "iVar14") (= "=") (subscript_expression "piVar10[10]" (identifier "piVar10") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar10[10] = iVar14 + 1;" (assignment_expression "piVar10[10] = iVar14 + 1" (subscript_expression "piVar10[10]" (identifier "piVar10") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar17[2] = iVar14;" (assignment_expression "piVar17[2] = iVar14" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar14")) (; ";")) (} "}")) (else_clause "else {\n                        piVar17[2] = param_4;\n                      }" (else "else") (compound_statement "{\n                        piVar17[2] = param_4;\n                      }" ({ "{") (expression_statement "piVar17[2] = param_4;" (assignment_expression "piVar17[2] = param_4" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "param_4")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" (else "else") (compound_statement "{\n                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);\n                      iVar28 = param_4;\n                      if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }\n                      local_d0[7] = iVar28;\n                      piVar17[2] = iVar28;\n                    }" ({ "{") (expression_statement "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);" (assignment_expression "iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" (* "*") (cast_expression "(int *)(piVar30[uVar11 * 0x11 + 6] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar30[uVar11 * 0x11 + 6] + 8)" (( "(") (binary_expression "piVar30[uVar11 * 0x11 + 6] + 8" (subscript_expression "piVar30[uVar11 * 0x11 + 6]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "6")) (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar28 = param_4;" (assignment_expression "iVar28 = param_4" (identifier "iVar28") (= "=") (identifier "param_4")) (; ";")) (if_statement "if ((iVar16 != iVar14) && (iVar14 != 0)) {\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" (if "if") (parenthesized_expression "((iVar16 != iVar14) && (iVar14 != 0))" (( "(") (binary_expression "(iVar16 != iVar14) && (iVar14 != 0)" (parenthesized_expression "(iVar16 != iVar14)" (( "(") (binary_expression "iVar16 != iVar14" (identifier "iVar16") (!= "!=") (identifier "iVar14")) () ")")) (&& "&&") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                        do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);\n                      }" ({ "{") (do_statement "do {\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        } while (iVar16 != iVar14);" (do "do") (compound_statement "{\n                          iVar14 = *(int *)(iVar14 + 0x14);\n                          iVar28 = iVar28 + 1;\n                          if (iVar14 == 0) break;\n                        }" ({ "{") (expression_statement "iVar14 = *(int *)(iVar14 + 0x14);" (assignment_expression "iVar14 = *(int *)(iVar14 + 0x14)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar14 + 0x14)" (* "*") (cast_expression "(int *)(iVar14 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x14)" (( "(") (binary_expression "iVar14 + 0x14" (identifier "iVar14") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar14 == 0) break;" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar16 != iVar14)" (( "(") (binary_expression "iVar16 != iVar14" (identifier "iVar16") (!= "!=") (identifier "iVar14")) () ")")) (; ";")) (} "}"))) (expression_statement "local_d0[7] = iVar28;" (assignment_expression "local_d0[7] = iVar28" (subscript_expression "local_d0[7]" (identifier "local_d0") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar28")) (; ";")) (expression_statement "piVar17[2] = iVar28;" (assignment_expression "piVar17[2] = iVar28" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar28")) (; ";")) (} "}")))) (expression_statement "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);" (call_expression "FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12)" (identifier "FUN_000497a0") (argument_list "(*(undefined4 *)(iVar16 + 0x2c),iVar12)" (( "(") (pointer_expression "*(undefined4 *)(iVar16 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(iVar16 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x2c)" (( "(") (binary_expression "iVar16 + 0x2c" (identifier "iVar16") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" (identifier "FUN_0005c7b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       ) {\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" (if "if") (parenthesized_expression "(((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))\n                       )" (( "(") (binary_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&\n                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" (parenthesized_expression "((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0))" (( "(") (binary_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&\n                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)" (parenthesized_expression "(((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0))" (( "(") (binary_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&\n                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0xf) != 0)" (( "(") (binary_expression "(*(uint *)(iVar38 + 0x24) & 0xf) != 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0xf)" (( "(") (binary_expression "*(uint *)(iVar38 + 0x24) & 0xf" (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0xf")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)" (( "(") (binary_expression "(*(uint *)(iVar38 + 0x24) & 0x8002) == 0" (parenthesized_expression "(*(uint *)(iVar38 + 0x24) & 0x8002)" (( "(") (binary_expression "*(uint *)(iVar38 + 0x24) & 0x8002" (pointer_expression "*(uint *)(iVar38 + 0x24)" (* "*") (cast_expression "(uint *)(iVar38 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x24)" (( "(") (binary_expression "iVar38 + 0x24" (identifier "iVar38") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x8002")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(local_d0 + 0xb) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(local_d0 + 0xb) & 1) == 0" (parenthesized_expression "(*(byte *)(local_d0 + 0xb) & 1)" (( "(") (binary_expression "*(byte *)(local_d0 + 0xb) & 1" (pointer_expression "*(byte *)(local_d0 + 0xb)" (* "*") (cast_expression "(byte *)(local_d0 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0 + 0xb)" (( "(") (binary_expression "local_d0 + 0xb" (identifier "local_d0") (+ "+") (number_literal "0xb")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))" (( "(") (parenthesized_expression "(*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68)))" (( "(") (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))" (binary_expression "*(char *)((int)local_d0 + 0x33) != '\x02'" (pointer_expression "*(char *)((int)local_d0 + 0x33)" (* "*") (cast_expression "(char *)((int)local_d0 + 0x33)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_d0 + 0x33)" (( "(") (binary_expression "(int)local_d0 + 0x33" (cast_expression "(int)local_d0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_d0")) (+ "+") (number_literal "0x33")) () ")")))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) (&& "&&") (parenthesized_expression "(0 < *(int *)(iVar3 + 0x68))" (( "(") (binary_expression "0 < *(int *)(iVar3 + 0x68)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;\n                    }" ({ "{") (expression_statement "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2;" (assignment_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)\n                           = 2" (pointer_expression "*(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)" (( "(") (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12" (binary_expression "*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 100)" (* "*") (cast_expression "(int *)(iVar3 + 100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 100)" (( "(") (binary_expression "iVar3 + 100" (identifier "iVar3") (+ "+") (number_literal "100")) () ")")))) (+ "+") (binary_expression "*(int *)(iVar3 + 0x68) * 0x14" (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")")))) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "2")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                    piVar17[2] = piVar17[1];\n                  }" (else "else") (compound_statement "{\n                    piVar17[2] = piVar17[1];\n                  }" ({ "{") (expression_statement "piVar17[2] = piVar17[1];" (assignment_expression "piVar17[2] = piVar17[1]" (subscript_expression "piVar17[2]" (identifier "piVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "piVar17[1]" (identifier "piVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (-1 < iVar12) {\n                  FUN_000893e0();\n                }" (if "if") (parenthesized_expression "(-1 < iVar12)" (( "(") (binary_expression "-1 < iVar12" (number_literal "-1") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n                  FUN_000893e0();\n                }" ({ "{") (expression_statement "FUN_000893e0();" (call_expression "FUN_000893e0()" (identifier "FUN_000893e0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "piVar17 = piVar17 + 0x11;" (assignment_expression "piVar17 = piVar17 + 0x11" (identifier "piVar17") (= "=") (binary_expression "piVar17 + 0x11" (identifier "piVar17") (+ "+") (number_literal "0x11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar17 != local_d0 + local_a0 * 0x11 + 0xbb)" (( "(") (binary_expression "piVar17 != local_d0 + local_a0 * 0x11 + 0xbb" (identifier "piVar17") (!= "!=") (binary_expression "local_d0 + local_a0 * 0x11 + 0xbb" (binary_expression "local_d0 + local_a0 * 0x11" (identifier "local_d0") (+ "+") (binary_expression "local_a0 * 0x11" (identifier "local_a0") (* "*") (number_literal "0x11"))) (+ "+") (number_literal "0xbb"))) () ")")) (; ";")) (expression_statement "local_d0[0xe] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_d0[0xe] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_d0[0xe]" (identifier "local_d0") ([ "[") (number_literal "0xe") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                local_88 = 0;\n                do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);\n                goto LAB_000a0bf2;\n              }" ({ "{") (expression_statement "local_88 = 0;" (assignment_expression "local_88 = 0" (identifier "local_88") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                } while (local_a0 != iVar12);" (do "do") (compound_statement "{\n                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }\n                  piVar17 = (int *)piVar10[0x1d];\n                  if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }\n                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }\n                  local_b8[8] = *(int *)(iVar3 + 0x68);\n                  iVar12 = local_88 + 1;\n                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);\n                  local_d0[8] = local_b8[6];\n                  local_b8 = local_b8 + 0x11;\n                  local_88 = iVar12;\n                }" ({ "{") (if_statement "if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" (if "if") (parenthesized_expression "((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0)" (( "(") (binary_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0" (parenthesized_expression "(*(byte *)(local_b8[0xe] + 0x25) & 0x40)" (( "(") (binary_expression "*(byte *)(local_b8[0xe] + 0x25) & 0x40" (pointer_expression "*(byte *)(local_b8[0xe] + 0x25)" (* "*") (cast_expression "(byte *)(local_b8[0xe] + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b8[0xe] + 0x25)" (( "(") (binary_expression "local_b8[0xe] + 0x25" (subscript_expression "local_b8[0xe]" (identifier "local_b8") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar11 = (uint)*(byte *)(local_b8 + 9);\n                    piVar17 = (int *)piVar10[2];\n                    iVar12 = FUN_000497a0(0,0);\n                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];\n                    piVar34 = (int *)local_d0[0x18];\n                    piVar23 = (int *)local_b8[0xe];\n                    piVar32 = piVar34 + local_d0[0x16] * 0xc;\n                    local_c0 = 0;\n                    if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }\n                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;\n                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;\n                    piVar23[9] = 0x4241;\n                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];\n                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];\n                    sVar2 = *(short *)((int)puVar22 + 0x2a);\n                    uVar31 = 0x3f;\n                    if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }\n                    if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }\n                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }\n                    piVar34 = (int *)FUN_00028510(local_3c);\n                    if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }\nLAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }\n                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;\n                  }" ({ "{") (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_b8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b8 + 9)" (( "(") (binary_expression "local_b8 + 9" (identifier "local_b8") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "piVar17 = (int *)piVar10[2];" (assignment_expression "piVar17 = (int *)piVar10[2]" (identifier "piVar17") (= "=") (cast_expression "(int *)piVar10[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[2]" (identifier "piVar10") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "iVar12 = FUN_000497a0(0,0);" (assignment_expression "iVar12 = FUN_000497a0(0,0)" (identifier "iVar12") (= "=") (call_expression "FUN_000497a0(0,0)" (identifier "FUN_000497a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];" (assignment_expression "puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6]" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)piVar30[uVar11 * 0x11 + 6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar30[uVar11 * 0x11 + 6]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 6" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "6")) (] "]")))) (; ";")) (expression_statement "piVar34 = (int *)local_d0[0x18];" (assignment_expression "piVar34 = (int *)local_d0[0x18]" (identifier "piVar34") (= "=") (cast_expression "(int *)local_d0[0x18]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_d0[0x18]" (identifier "local_d0") ([ "[") (number_literal "0x18") (] "]")))) (; ";")) (expression_statement "piVar23 = (int *)local_b8[0xe];" (assignment_expression "piVar23 = (int *)local_b8[0xe]" (identifier "piVar23") (= "=") (cast_expression "(int *)local_b8[0xe]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_b8[0xe]" (identifier "local_b8") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (expression_statement "piVar32 = piVar34 + local_d0[0x16] * 0xc;" (assignment_expression "piVar32 = piVar34 + local_d0[0x16] * 0xc" (identifier "piVar32") (= "=") (binary_expression "piVar34 + local_d0[0x16] * 0xc" (identifier "piVar34") (+ "+") (binary_expression "local_d0[0x16] * 0xc" (subscript_expression "local_d0[0x16]" (identifier "local_d0") ([ "[") (number_literal "0x16") (] "]")) (* "*") (number_literal "0xc")))) (; ";")) (expression_statement "local_c0 = 0;" (assignment_expression "local_c0 = 0" (identifier "local_c0") (= "=") (number_literal "0")) (; ";")) (if_statement "if (piVar34 < piVar32) {\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }\n                    else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" (if "if") (parenthesized_expression "(piVar34 < piVar32)" (( "(") (binary_expression "piVar34 < piVar32" (identifier "piVar34") (< "<") (identifier "piVar32")) () ")")) (compound_statement "{\n                      bVar39 = false;\n                      uVar25 = 0;\n                      local_a8 = 0;\n                      local_74 = 0;\n                      do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);\nLAB_000a0663:\n                      uVar25 = ~uVar25;\n                      uVar13 = ~local_a8 | 0x80000000;\n                    }" ({ "{") (expression_statement "bVar39 = false;" (assignment_expression "bVar39 = false" (identifier "bVar39") (= "=") (false "false")) (; ";")) (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      } while (piVar34 < piVar32);" (do "do") (compound_statement "{\n                        while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }\n                        uVar13 = piVar34[7];\n                        local_d8 = 0x80000000;\n                        uVar43 = 0;\n                        if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }\n                        if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }\n                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }\n                        bVar39 = true;\n                        piVar34 = piVar34 + 0xc;\n                      }" ({ "{") (while_statement "while( true ) {\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                          if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }\n                          iVar38 = FUN_00030fa0(uVar40);\n                          if (iVar38 != 0) break;\nLAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;\n                          if (piVar32 <= piVar34) goto LAB_000a0663;\n                        }" ({ "{") (if_statement "if (((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" (if "if") (parenthesized_expression "(((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0))" (( "(") (binary_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&\n                             ((*(byte *)(*piVar34 + 4) & 1) == 0)" (parenthesized_expression "((piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0))" (( "(") (binary_expression "(piVar23[1] == 0 && *piVar23 == 0) &&\n                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)" (parenthesized_expression "(piVar23[1] == 0 && *piVar23 == 0)" (( "(") (binary_expression "piVar23[1] == 0 && *piVar23 == 0" (binary_expression "piVar23[1] == 0" (subscript_expression "piVar23[1]" (identifier "piVar23") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)((int)piVar34 + 10) & 2) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar34 + 10) & 2) == 0" (parenthesized_expression "(*(byte *)((int)piVar34 + 10) & 2)" (( "(") (binary_expression "*(byte *)((int)piVar34 + 10) & 2" (pointer_expression "*(byte *)((int)piVar34 + 10)" (* "*") (cast_expression "(byte *)((int)piVar34 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar34 + 10)" (( "(") (binary_expression "(int)piVar34 + 10" (cast_expression "(int)piVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar34")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(*piVar34 + 4) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(*piVar34 + 4) & 1) == 0" (parenthesized_expression "(*(byte *)(*piVar34 + 4) & 1)" (( "(") (binary_expression "*(byte *)(*piVar34 + 4) & 1" (pointer_expression "*(byte *)(*piVar34 + 4)" (* "*") (cast_expression "(byte *)(*piVar34 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar34 + 4)" (( "(") (binary_expression "*piVar34 + 4" (pointer_expression "*piVar34" (* "*") (identifier "piVar34")) (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                            local_28 = '\x03';\n                            local_3c[1] = unaff_EDI + -0x70cb7;\n                            local_24 = piVar30[uVar11 * 0x11 + 0xc];\n                            local_3c[2] = unaff_EDI + -0x82347;\n                            FUN_0002e610(*piVar34);\n                            if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }\n                          }" ({ "{") (expression_statement "local_28 = '\x03';" (assignment_expression "local_28 = '\x03'" (identifier "local_28") (= "=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) (; ";")) (expression_statement "local_3c[1] = unaff_EDI + -0x70cb7;" (assignment_expression "local_3c[1] = unaff_EDI + -0x70cb7" (subscript_expression "local_3c[1]" (identifier "local_3c") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "unaff_EDI + -0x70cb7" (identifier "unaff_EDI") (+ "+") (number_literal "-0x70cb7"))) (; ";")) (expression_statement "local_24 = piVar30[uVar11 * 0x11 + 0xc];" (assignment_expression "local_24 = piVar30[uVar11 * 0x11 + 0xc]" (identifier "local_24") (= "=") (subscript_expression "piVar30[uVar11 * 0x11 + 0xc]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0xc" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0xc")) (] "]"))) (; ";")) (expression_statement "local_3c[2] = unaff_EDI + -0x82347;" (assignment_expression "local_3c[2] = unaff_EDI + -0x82347" (subscript_expression "local_3c[2]" (identifier "local_3c") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "unaff_EDI + -0x82347" (identifier "unaff_EDI") (+ "+") (number_literal "-0x82347"))) (; ";")) (expression_statement "FUN_0002e610(*piVar34);" (call_expression "FUN_0002e610(*piVar34)" (identifier "FUN_0002e610") (argument_list "(*piVar34)" (( "(") (pointer_expression "*piVar34" (* "*") (identifier "piVar34")) () ")"))) (; ";")) (if_statement "if (local_28 != '\0') {\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" (if "if") (parenthesized_expression "(local_28 != '\0')" (( "(") (binary_expression "local_28 != '\0'" (identifier "local_28") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                              FUN_0003dcd0(0);\n                              local_74 = FUN_0003a550();\n                            }" ({ "{") (expression_statement "FUN_0003dcd0(0);" (call_expression "FUN_0003dcd0(0)" (identifier "FUN_0003dcd0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_74 = FUN_0003a550();" (assignment_expression "local_74 = FUN_0003a550()" (identifier "local_74") (= "=") (call_expression "FUN_0003a550()" (identifier "FUN_0003a550") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar38 = FUN_00030fa0(uVar40);" (assignment_expression "iVar38 = FUN_00030fa0(uVar40)" (identifier "iVar38") (= "=") (call_expression "FUN_00030fa0(uVar40)" (identifier "FUN_00030fa0") (argument_list "(uVar40)" (( "(") (identifier "uVar40") () ")")))) (; ";")) (if_statement "if (iVar38 != 0) break;" (if "if") (parenthesized_expression "(iVar38 != 0)" (( "(") (binary_expression "iVar38 != 0" (identifier "iVar38") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000a05b6:\n                          piVar34 = piVar34 + 0xc;" (statement_identifier "LAB_000a05b6") (: ":") (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" (identifier "piVar34") (= "=") (binary_expression "piVar34 + 0xc" (identifier "piVar34") (+ "+") (number_literal "0xc"))) (; ";"))) (if_statement "if (piVar32 <= piVar34) goto LAB_000a0663;" (if "if") (parenthesized_expression "(piVar32 <= piVar34)" (( "(") (binary_expression "piVar32 <= piVar34" (identifier "piVar32") (<= "<=") (identifier "piVar34")) () ")")) (goto_statement "goto LAB_000a0663;" (goto "goto") (statement_identifier "LAB_000a0663") (; ";"))) (} "}"))) (expression_statement "uVar13 = piVar34[7];" (assignment_expression "uVar13 = piVar34[7]" (identifier "uVar13") (= "=") (subscript_expression "piVar34[7]" (identifier "piVar34") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_d8 = 0x80000000;" (assignment_expression "local_d8 = 0x80000000" (identifier "local_d8") (= "=") (number_literal "0x80000000")) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)uVar13 < 0x40) {\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" (if "if") (parenthesized_expression "((int)uVar13 < 0x40)" (( "(") (binary_expression "(int)uVar13 < 0x40" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n                          bVar8 = (byte)uVar13 & 0x1f;\n                          uVar31 = 1 << ((byte)uVar13 & 0x1f);\n                          uVar43 = uVar31;\n                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                          if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }\n                        }" ({ "{") (expression_statement "bVar8 = (byte)uVar13 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar13 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar13")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar31 = 1 << ((byte)uVar13 & 0x1f);" (assignment_expression "uVar31 = 1 << ((byte)uVar13 & 0x1f)" (identifier "uVar31") (= "=") (binary_expression "1 << ((byte)uVar13 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar13 & 0x1f)" (( "(") (binary_expression "(byte)uVar13 & 0x1f" (cast_expression "(byte)uVar13" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar13")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar43 = uVar31;" (assignment_expression "uVar43 = uVar31" (identifier "uVar43") (= "=") (identifier "uVar31")) (; ";")) (expression_statement "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8" (identifier "local_d8") (= "=") (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" (number_literal "0") (<< "<<") (identifier "bVar8")) (| "|") (binary_expression "1U >> 0x20 - bVar8" (number_literal "1U") (>> ">>") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar13 & 0x20) != 0) {\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" (if "if") (parenthesized_expression "((uVar13 & 0x20) != 0)" (( "(") (binary_expression "(uVar13 & 0x20) != 0" (parenthesized_expression "(uVar13 & 0x20)" (( "(") (binary_expression "uVar13 & 0x20" (identifier "uVar13") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            uVar43 = 0;\n                            local_d8 = uVar31;\n                          }" ({ "{") (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = uVar31;" (assignment_expression "local_d8 = uVar31" (identifier "local_d8") (= "=") (identifier "uVar31")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (!bVar39) {\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" (if "if") (parenthesized_expression "(!bVar39)" (( "(") (unary_expression "!bVar39" (! "!") (identifier "bVar39")) () ")")) (compound_statement "{\n                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));\n                        }" ({ "{") (expression_statement "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));" (call_expression "FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" (identifier "FUN_00052380") (argument_list "(0x11c,unaff_EDI + 0x59c3e,*puVar22,\n                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]))" (( "(") (number_literal "0x11c") (, ",") (binary_expression "unaff_EDI + 0x59c3e" (identifier "unaff_EDI") (+ "+") (number_literal "0x59c3e")) (, ",") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (, ",") (pointer_expression "*(undefined4 *)(uVar13 * 0x10 + puVar22[1])" (* "*") (cast_expression "(undefined4 *)(uVar13 * 0x10 + puVar22[1])" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 * 0x10 + puVar22[1])" (( "(") (binary_expression "uVar13 * 0x10 + puVar22[1]" (binary_expression "uVar13 * 0x10" (identifier "uVar13") (* "*") (number_literal "0x10")) (+ "+") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" (if "if") (parenthesized_expression "((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0)" (( "(") (binary_expression "(local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0" (binary_expression "(local_a8 & local_d8) == 0" (parenthesized_expression "(local_a8 & local_d8)" (( "(") (binary_expression "local_a8 & local_d8" (identifier "local_a8") (& "&") (identifier "local_d8")) () ")")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uVar43 & uVar25) == 0" (parenthesized_expression "(uVar43 & uVar25)" (( "(") (binary_expression "uVar43 & uVar25" (identifier "uVar43") (& "&") (identifier "uVar25")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }\n                          goto LAB_000a0ba5;\n                        }" ({ "{") (if_statement "if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)) {\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" (if "if") (parenthesized_expression "((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0))" (( "(") (binary_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||\n                             (iVar38 = FUN_00031110(), iVar38 == 0)" (parenthesized_expression "(local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb))" (( "(") (binary_expression "local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)" (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1")) (<= "<=") (binary_expression "(int)(uint)*(ushort *)(piVar23 + 0xb)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(piVar23 + 0xb)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar23 + 0xb)" (( "(") (binary_expression "piVar23 + 0xb" (identifier "piVar23") (+ "+") (number_literal "0xb")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(iVar38 = FUN_00031110(), iVar38 == 0)" (( "(") (comma_expression "iVar38 = FUN_00031110(), iVar38 == 0" (assignment_expression "iVar38 = FUN_00031110()" (identifier "iVar38") (= "=") (call_expression "FUN_00031110()" (identifier "FUN_00031110") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar38 == 0" (identifier "iVar38") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                            bVar39 = true;\n                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;\n                            local_a8 = local_a8 | local_d8;\n                            uVar25 = uVar25 | uVar43;\n                            local_c0 = local_c0 + 1;\n                            goto LAB_000a05b6;\n                          }" ({ "{") (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" (identifier "bVar39") (= "=") (true "true")) (; ";")) (expression_statement "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;" (assignment_expression "*(int **)(piVar23[0xc] + local_c0 * 4) = piVar34" (pointer_expression "*(int **)(piVar23[0xc] + local_c0 * 4)" (* "*") (cast_expression "(int **)(piVar23[0xc] + local_c0 * 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar23[0xc] + local_c0 * 4)" (( "(") (binary_expression "piVar23[0xc] + local_c0 * 4" (subscript_expression "piVar23[0xc]" (identifier "piVar23") ([ "[") (number_literal "0xc") (] "]")) (+ "+") (binary_expression "local_c0 * 4" (identifier "local_c0") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "piVar34")) (; ";")) (expression_statement "local_a8 = local_a8 | local_d8;" (assignment_expression "local_a8 = local_a8 | local_d8" (identifier "local_a8") (= "=") (binary_expression "local_a8 | local_d8" (identifier "local_a8") (| "|") (identifier "local_d8"))) (; ";")) (expression_statement "uVar25 = uVar25 | uVar43;" (assignment_expression "uVar25 = uVar25 | uVar43" (identifier "uVar25") (= "=") (binary_expression "uVar25 | uVar43" (identifier "uVar25") (| "|") (identifier "uVar43"))) (; ";")) (expression_statement "local_c0 = local_c0 + 1;" (assignment_expression "local_c0 = local_c0 + 1" (identifier "local_c0") (= "=") (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_000a05b6;" (goto "goto") (statement_identifier "LAB_000a05b6") (; ";")) (} "}"))) (goto_statement "goto LAB_000a0ba5;" (goto "goto") (statement_identifier "LAB_000a0ba5") (; ";")) (} "}"))) (expression_statement "bVar39 = true;" (assignment_expression "bVar39 = true" (identifier "bVar39") (= "=") (true "true")) (; ";")) (expression_statement "piVar34 = piVar34 + 0xc;" (assignment_expression "piVar34 = piVar34 + 0xc" (identifier "piVar34") (= "=") (binary_expression "piVar34 + 0xc" (identifier "piVar34") (+ "+") (number_literal "0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar34 < piVar32)" (( "(") (binary_expression "piVar34 < piVar32" (identifier "piVar34") (< "<") (identifier "piVar32")) () ")")) (; ";")) (labeled_statement "LAB_000a0663:\n                      uVar25 = ~uVar25;" (statement_identifier "LAB_000a0663") (: ":") (expression_statement "uVar25 = ~uVar25;" (assignment_expression "uVar25 = ~uVar25" (identifier "uVar25") (= "=") (unary_expression "~uVar25" (~ "~") (identifier "uVar25"))) (; ";"))) (expression_statement "uVar13 = ~local_a8 | 0x80000000;" (assignment_expression "uVar13 = ~local_a8 | 0x80000000" (identifier "uVar13") (= "=") (binary_expression "~local_a8 | 0x80000000" (unary_expression "~local_a8" (~ "~") (identifier "local_a8")) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")) (else_clause "else {\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" (else "else") (compound_statement "{\n                      uVar25 = 0xffffffff;\n                      uVar13 = 0xffffffff;\n                      local_c0._0_2_ = 0;\n                      local_74 = 0;\n                    }" ({ "{") (expression_statement "uVar25 = 0xffffffff;" (assignment_expression "uVar25 = 0xffffffff" (identifier "uVar25") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar13 = 0xffffffff;" (assignment_expression "uVar13 = 0xffffffff" (identifier "uVar13") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_c0._0_2_ = 0;" (assignment_expression "local_c0._0_2_ = 0" (field_expression "local_c0._0_2_" (identifier "local_c0") (. ".") (field_identifier "_0_2_")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = 0;" (assignment_expression "local_74 = 0" (identifier "local_74") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 10) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 10)" (* "*") (cast_expression "(undefined2 *)(piVar23 + 10)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar23 + 10)" (( "(") (binary_expression "piVar23 + 10" (identifier "piVar23") (+ "+") (number_literal "10")) () ")")))) (= "=") (cast_expression "(undefined2)local_c0" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_c0"))) (; ";")) (expression_statement "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;" (assignment_expression "*(undefined2 *)(piVar23 + 6) = (undefined2)local_c0" (pointer_expression "*(undefined2 *)(piVar23 + 6)" (* "*") (cast_expression "(undefined2 *)(piVar23 + 6)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar23 + 6)" (( "(") (binary_expression "piVar23 + 6" (identifier "piVar23") (+ "+") (number_literal "6")) () ")")))) (= "=") (cast_expression "(undefined2)local_c0" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "local_c0"))) (; ";")) (expression_statement "piVar23[9] = 0x4241;" (assignment_expression "piVar23[9] = 0x4241" (subscript_expression "piVar23[9]" (identifier "piVar23") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0x4241")) (; ";")) (expression_statement "uVar43 = piVar30[uVar11 * 0x11 + 0xf];" (assignment_expression "uVar43 = piVar30[uVar11 * 0x11 + 0xf]" (identifier "uVar43") (= "=") (subscript_expression "piVar30[uVar11 * 0x11 + 0xf]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0xf" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0xf")) (] "]"))) (; ";")) (expression_statement "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];" (assignment_expression "uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10]" (identifier "uVar13") (= "=") (binary_expression "uVar13 & piVar30[uVar11 * 0x11 + 0x10]" (identifier "uVar13") (& "&") (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0x10")) (] "]")))) (; ";")) (expression_statement "sVar2 = *(short *)((int)puVar22 + 0x2a);" (assignment_expression "sVar2 = *(short *)((int)puVar22 + 0x2a)" (identifier "sVar2") (= "=") (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "uVar31 = 0x3f;" (assignment_expression "uVar31 = 0x3f" (identifier "uVar31") (= "=") (number_literal "0x3f")) (; ";")) (if_statement "if (sVar2 < 0x40) {\n                      uVar31 = (int)sVar2;\n                    }" (if "if") (parenthesized_expression "(sVar2 < 0x40)" (( "(") (binary_expression "sVar2 < 0x40" (identifier "sVar2") (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n                      uVar31 = (int)sVar2;\n                    }" ({ "{") (expression_statement "uVar31 = (int)sVar2;" (assignment_expression "uVar31 = (int)sVar2" (identifier "uVar31") (= "=") (cast_expression "(int)sVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar2"))) (; ";")) (} "}"))) (if_statement "if (0 < sVar2) {\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" (if "if") (parenthesized_expression "(0 < sVar2)" (( "(") (binary_expression "0 < sVar2" (number_literal "0") (< "<") (identifier "sVar2")) () ")")) (compound_statement "{\n                      uVar26 = 0;\n                      do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);\n                    }" ({ "{") (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      } while (uVar31 != uVar26);" (do "do") (compound_statement "{\n                        bVar8 = (byte)uVar26 & 0x1f;\n                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                        if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }\n                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);\n                        uVar26 = uVar26 + 1;\n                      }" ({ "{") (expression_statement "bVar8 = (byte)uVar26 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar26 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (identifier "uVar27") (= "=") (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" (( "(") (binary_expression "uVar25 & uVar43" (identifier "uVar25") (& "&") (identifier "uVar43")) () ")")) (>> ">>") (identifier "bVar8")) (| "|") (binary_expression "uVar13 << 0x20 - bVar8" (identifier "uVar13") (<< "<<") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar26 & 0x20) != 0) {\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" (if "if") (parenthesized_expression "((uVar26 & 0x20) != 0)" (( "(") (binary_expression "(uVar26 & 0x20) != 0" (parenthesized_expression "(uVar26 & 0x20)" (( "(") (binary_expression "uVar26 & 0x20" (identifier "uVar26") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);\n                        }" ({ "{") (expression_statement "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);" (assignment_expression "uVar27 = uVar13 >> ((byte)uVar26 & 0x1f)" (identifier "uVar27") (= "=") (binary_expression "uVar13 >> ((byte)uVar26 & 0x1f)" (identifier "uVar13") (>> ">>") (parenthesized_expression "((byte)uVar26 & 0x1f)" (( "(") (binary_expression "(byte)uVar26 & 0x1f" (cast_expression "(byte)uVar26" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar26")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (expression_statement "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);" (assignment_expression "local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0)" (identifier "local_c0") (= "=") (binary_expression "(local_c0 + 1) - (uint)((uVar27 & 1) == 0)" (parenthesized_expression "(local_c0 + 1)" (( "(") (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)((uVar27 & 1) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar27 & 1) == 0)" (( "(") (binary_expression "(uVar27 & 1) == 0" (parenthesized_expression "(uVar27 & 1)" (( "(") (binary_expression "uVar27 & 1" (identifier "uVar27") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "uVar26 = uVar26 + 1;" (assignment_expression "uVar26 = uVar26 + 1" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar31 != uVar26)" (( "(") (binary_expression "uVar31 != uVar26" (identifier "uVar31") (!= "!=") (identifier "uVar26")) () ")")) (; ";")) (} "}"))) (if_statement "if (piVar30[uVar11 * 0x11 + 0x10] < 0) {\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" (if "if") (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" (( "(") (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0x10")) (] "]")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                      local_c0 = local_c0 + -0x3f + (int)sVar2;\n                    }" ({ "{") (expression_statement "local_c0 = local_c0 + -0x3f + (int)sVar2;" (assignment_expression "local_c0 = local_c0 + -0x3f + (int)sVar2" (identifier "local_c0") (= "=") (binary_expression "local_c0 + -0x3f + (int)sVar2" (binary_expression "local_c0 + -0x3f" (identifier "local_c0") (+ "+") (number_literal "-0x3f")) (+ "+") (cast_expression "(int)sVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar2")))) (; ";")) (} "}"))) (expression_statement "piVar34 = (int *)FUN_00028510(local_3c);" (assignment_expression "piVar34 = (int *)FUN_00028510(local_3c)" (identifier "piVar34") (= "=") (cast_expression "(int *)FUN_00028510(local_3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00028510(local_3c)" (identifier "FUN_00028510") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))))) (; ";")) (if_statement "if (piVar34 != (int *)0x0) {\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" (if "if") (parenthesized_expression "(piVar34 != (int *)0x0)" (( "(") (binary_expression "piVar34 != (int *)0x0" (identifier "piVar34") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                      iVar38 = 0;\n                      uVar26 = 0;\n                      piVar23[8] = (int)piVar34;\n                      *piVar34 = unaff_EDI + 0x59c58;\n                      piVar34[3] = (int)puVar22;\n                      piVar35 = (int *)local_d0[0x18];\n                      if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }\n                      local_84 = &UNK_00064bb9 + unaff_EDI;\n                      iVar14 = piVar34[1];\n                      if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }\n                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }\n                      *puVar36 = 0xffff;\n                      *(undefined **)(piVar34[8] + uVar26) = local_84;\n                      iVar16 = piVar10[10];\n                      piVar10[10] = iVar16 + 1;\n                      local_b8[2] = iVar16;\n                      FUN_000497a0(local_c0 + 1,0);\n                      FUN_0005c7b0();\n                      uVar11 = (uint)*(byte *)(local_b8 + 9);\n                      iVar16 = *(int *)(local_d0[0x13] + 4);\n                      iVar14 = uVar11 * 0x44 + iVar16;\n                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }\n                      if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }\n                      if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }\n                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);\n                      FUN_000497a0(iVar28,0);\n                      if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }\n                      if (local_74 != 0) {\n                        FUN_00049570();\n                      }\n                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }\n                      iVar38 = piVar17[0x1a];\n                      if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }\n                      if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = iVar38;\n                      if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }\n                      iVar38 = piVar17[0x1a] + -1;\n                      if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }\n                      puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                      if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }\n                      *(int *)(puVar20 + 8) = piVar17[0x1a];\n                    }" ({ "{") (expression_statement "iVar38 = 0;" (assignment_expression "iVar38 = 0" (identifier "iVar38") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar23[8] = (int)piVar34;" (assignment_expression "piVar23[8] = (int)piVar34" (subscript_expression "piVar23[8]" (identifier "piVar23") ([ "[") (number_literal "8") (] "]")) (= "=") (cast_expression "(int)piVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar34"))) (; ";")) (expression_statement "*piVar34 = unaff_EDI + 0x59c58;" (assignment_expression "*piVar34 = unaff_EDI + 0x59c58" (pointer_expression "*piVar34" (* "*") (identifier "piVar34")) (= "=") (binary_expression "unaff_EDI + 0x59c58" (identifier "unaff_EDI") (+ "+") (number_literal "0x59c58"))) (; ";")) (expression_statement "piVar34[3] = (int)puVar22;" (assignment_expression "piVar34[3] = (int)puVar22" (subscript_expression "piVar34[3]" (identifier "piVar34") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22"))) (; ";")) (expression_statement "piVar35 = (int *)local_d0[0x18];" (assignment_expression "piVar35 = (int *)local_d0[0x18]" (identifier "piVar35") (= "=") (cast_expression "(int *)local_d0[0x18]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_d0[0x18]" (identifier "local_d0") ([ "[") (number_literal "0x18") (] "]")))) (; ";")) (if_statement "if (piVar35 < piVar32) {\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }\n                      else {\n                        iVar16 = 0;\n                      }" (if "if") (parenthesized_expression "(piVar35 < piVar32)" (( "(") (binary_expression "piVar35 < piVar32" (identifier "piVar35") (< "<") (identifier "piVar32")) () ")")) (compound_statement "{\n                        local_78 = 0;\n                        do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);\nLAB_000a0858:\n                        uVar26 = iVar38 * 4;\n                      }" ({ "{") (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        } while (piVar35 < piVar32);" (do "do") (compound_statement "{\n                          while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }\n                          uVar27 = piVar35[7];\n                          uVar18 = 0;\n                          uVar33 = 0x80000000;\n                          if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }\n                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;\n                          uVar26 = uVar26 | uVar18;\n                          local_70 = (undefined2)uVar27;\n                          local_78 = local_78 | uVar33;\n                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;\n                          puVar19 = (undefined4 *)FUN_0005dbf0();\n                          puVar20 = &UNK_00064bb9 + unaff_EDI;\n                          if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }\n                          iVar16 = iVar16 + 2;\n                          piVar35 = piVar35 + 0xc;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;\n                          iVar38 = iVar38 + 1;\n                        }" ({ "{") (while_statement "while( true ) {\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                            iVar16 = iVar38 * 2;\n                            iVar14 = FUN_00030fa0(uVar40);\n                            if (iVar14 != 0) break;\nLAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;\n                            if (piVar32 <= piVar35) goto LAB_000a0858;\n                          }" ({ "{") (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" (identifier "iVar16") (= "=") (binary_expression "iVar38 * 2" (identifier "iVar38") (* "*") (number_literal "2"))) (; ";")) (expression_statement "iVar14 = FUN_00030fa0(uVar40);" (assignment_expression "iVar14 = FUN_00030fa0(uVar40)" (identifier "iVar14") (= "=") (call_expression "FUN_00030fa0(uVar40)" (identifier "FUN_00030fa0") (argument_list "(uVar40)" (( "(") (identifier "uVar40") () ")")))) (; ";")) (if_statement "if (iVar14 != 0) break;" (if "if") (parenthesized_expression "(iVar14 != 0)" (( "(") (binary_expression "iVar14 != 0" (identifier "iVar14") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000a07a0:\n                            piVar35 = piVar35 + 0xc;" (statement_identifier "LAB_000a07a0") (: ":") (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" (identifier "piVar35") (= "=") (binary_expression "piVar35 + 0xc" (identifier "piVar35") (+ "+") (number_literal "0xc"))) (; ";"))) (if_statement "if (piVar32 <= piVar35) goto LAB_000a0858;" (if "if") (parenthesized_expression "(piVar32 <= piVar35)" (( "(") (binary_expression "piVar32 <= piVar35" (identifier "piVar32") (<= "<=") (identifier "piVar35")) () ")")) (goto_statement "goto LAB_000a0858;" (goto "goto") (statement_identifier "LAB_000a0858") (; ";"))) (} "}"))) (expression_statement "uVar27 = piVar35[7];" (assignment_expression "uVar27 = piVar35[7]" (identifier "uVar27") (= "=") (subscript_expression "piVar35[7]" (identifier "piVar35") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar33 = 0x80000000;" (assignment_expression "uVar33 = 0x80000000" (identifier "uVar33") (= "=") (number_literal "0x80000000")) (; ";")) (if_statement "if ((int)uVar27 < 0x40) {\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" (if "if") (parenthesized_expression "((int)uVar27 < 0x40)" (( "(") (binary_expression "(int)uVar27 < 0x40" (cast_expression "(int)uVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar27")) (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n                            bVar39 = (uVar27 & 0x20) == 0;\n                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);\n                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);\n                          }" ({ "{") (expression_statement "bVar39 = (uVar27 & 0x20) == 0;" (assignment_expression "bVar39 = (uVar27 & 0x20) == 0" (identifier "bVar39") (= "=") (binary_expression "(uVar27 & 0x20) == 0" (parenthesized_expression "(uVar27 & 0x20)" (( "(") (binary_expression "uVar27 & 0x20" (identifier "uVar27") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0"))) (; ";")) (expression_statement "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f)" (identifier "uVar33") (= "=") (binary_expression "(uint)!bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)!bVar39" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (unary_expression "!bVar39" (! "!") (identifier "bVar39"))) (<< "<<") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f)" (identifier "uVar18") (= "=") (binary_expression "(uint)bVar39 << ((byte)uVar27 & 0x1f)" (cast_expression "(uint)bVar39" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar39")) (<< "<<") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;" (if "if") (parenthesized_expression "((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0)" (( "(") (binary_expression "(local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0" (binary_expression "(local_78 & uVar33) != 0" (parenthesized_expression "(local_78 & uVar33)" (( "(") (binary_expression "local_78 & uVar33" (identifier "local_78") (& "&") (identifier "uVar33")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uVar26 & uVar18) != 0" (parenthesized_expression "(uVar26 & uVar18)" (( "(") (binary_expression "uVar26 & uVar18" (identifier "uVar26") (& "&") (identifier "uVar18")) () ")")) (!= "!=") (number_literal "0"))) () ")")) (goto_statement "goto LAB_000a07a0;" (goto "goto") (statement_identifier "LAB_000a07a0") (; ";"))) (expression_statement "uVar26 = uVar26 | uVar18;" (assignment_expression "uVar26 = uVar26 | uVar18" (identifier "uVar26") (= "=") (binary_expression "uVar26 | uVar18" (identifier "uVar26") (| "|") (identifier "uVar18"))) (; ";")) (expression_statement "local_70 = (undefined2)uVar27;" (assignment_expression "local_70 = (undefined2)uVar27" (identifier "local_70") (= "=") (cast_expression "(undefined2)uVar27" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "uVar27"))) (; ";")) (expression_statement "local_78 = local_78 | uVar33;" (assignment_expression "local_78 = local_78 | uVar33" (identifier "local_78") (= "=") (binary_expression "local_78 | uVar33" (identifier "local_78") (| "|") (identifier "uVar33"))) (; ";")) (expression_statement "*(undefined2 *)(piVar34[1] + iVar16) = local_70;" (assignment_expression "*(undefined2 *)(piVar34[1] + iVar16) = local_70" (pointer_expression "*(undefined2 *)(piVar34[1] + iVar16)" (* "*") (cast_expression "(undefined2 *)(piVar34[1] + iVar16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar34[1] + iVar16)" (( "(") (binary_expression "piVar34[1] + iVar16" (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar16")) () ")")))) (= "=") (identifier "local_70")) (; ";")) (expression_statement "puVar19 = (undefined4 *)FUN_0005dbf0();" (assignment_expression "puVar19 = (undefined4 *)FUN_0005dbf0()" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)FUN_0005dbf0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005dbf0()" (identifier "FUN_0005dbf0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar20 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_00064bb9 + unaff_EDI" (identifier "puVar20") (= "=") (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" (& "&") (identifier "UNK_00064bb9")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if (puVar19 != (undefined4 *)0x0) {\n                            puVar20 = (undefined *)*puVar19;\n                          }" (if "if") (parenthesized_expression "(puVar19 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar19 != (undefined4 *)0x0" (identifier "puVar19") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                            puVar20 = (undefined *)*puVar19;\n                          }" ({ "{") (expression_statement "puVar20 = (undefined *)*puVar19;" (assignment_expression "puVar20 = (undefined *)*puVar19" (identifier "puVar20") (= "=") (cast_expression "(undefined *)*puVar19" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (} "}"))) (expression_statement "iVar16 = iVar16 + 2;" (assignment_expression "iVar16 = iVar16 + 2" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 2" (identifier "iVar16") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar35 = piVar35 + 0xc;" (assignment_expression "piVar35 = piVar35 + 0xc" (identifier "piVar35") (= "=") (binary_expression "piVar35 + 0xc" (identifier "piVar35") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = puVar20" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" (* "*") (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar34[8] + iVar38 * 4)" (( "(") (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" (identifier "piVar34") ([ "[") (number_literal "8") (] "]")) (+ "+") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar20")) (; ";")) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar35 < piVar32)" (( "(") (binary_expression "piVar35 < piVar32" (identifier "piVar35") (< "<") (identifier "piVar32")) () ")")) (; ";")) (labeled_statement "LAB_000a0858:\n                        uVar26 = iVar38 * 4;" (statement_identifier "LAB_000a0858") (: ":") (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" (identifier "uVar26") (= "=") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) (; ";"))) (} "}")) (else_clause "else {\n                        iVar16 = 0;\n                      }" (else "else") (compound_statement "{\n                        iVar16 = 0;\n                      }" ({ "{") (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "local_84 = &UNK_00064bb9 + unaff_EDI;" (assignment_expression "local_84 = &UNK_00064bb9 + unaff_EDI" (identifier "local_84") (= "=") (binary_expression "&UNK_00064bb9 + unaff_EDI" (pointer_expression "&UNK_00064bb9" (& "&") (identifier "UNK_00064bb9")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" (identifier "iVar14") (= "=") (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (sVar2 < 1) {\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }\n                      else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" (if "if") (parenthesized_expression "(sVar2 < 1)" (( "(") (binary_expression "sVar2 < 1" (identifier "sVar2") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                        puVar36 = (undefined2 *)(iVar14 + iVar16);\n                      }" ({ "{") (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" (identifier "puVar36") (= "=") (cast_expression "(undefined2 *)(iVar14 + iVar16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + iVar16)" (( "(") (binary_expression "iVar14 + iVar16" (identifier "iVar14") (+ "+") (identifier "iVar16")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" (else "else") (compound_statement "{\n                        uVar27 = 0;\n                        do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);\n                      }" ({ "{") (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" (identifier "uVar27") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        } while (uVar31 != uVar27);" (do "do") (compound_statement "{\n                          uVar26 = iVar38 * 4;\n                          iVar16 = iVar38 * 2;\n                          puVar36 = (undefined2 *)(iVar14 + iVar16);\n                          bVar8 = (byte)uVar27 & 0x1f;\n                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;\n                          if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }\n                          if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }\n                          uVar27 = uVar27 + 1;\n                        }" ({ "{") (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" (identifier "uVar26") (= "=") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar16 = iVar38 * 2;" (assignment_expression "iVar16 = iVar38 * 2" (identifier "iVar16") (= "=") (binary_expression "iVar38 * 2" (identifier "iVar38") (* "*") (number_literal "2"))) (; ";")) (expression_statement "puVar36 = (undefined2 *)(iVar14 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + iVar16)" (identifier "puVar36") (= "=") (cast_expression "(undefined2 *)(iVar14 + iVar16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + iVar16)" (( "(") (binary_expression "iVar14 + iVar16" (identifier "iVar14") (+ "+") (identifier "iVar16")) () ")")))) (; ";")) (expression_statement "bVar8 = (byte)uVar27 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar27 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;" (assignment_expression "uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (identifier "uVar18") (= "=") (binary_expression "(uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8" (binary_expression "(uVar25 & uVar43) >> bVar8" (parenthesized_expression "(uVar25 & uVar43)" (( "(") (binary_expression "uVar25 & uVar43" (identifier "uVar25") (& "&") (identifier "uVar43")) () ")")) (>> ">>") (identifier "bVar8")) (| "|") (binary_expression "uVar13 << 0x20 - bVar8" (identifier "uVar13") (<< "<<") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar27 & 0x20) != 0) {\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }" (if "if") (parenthesized_expression "((uVar27 & 0x20) != 0)" (( "(") (binary_expression "(uVar27 & 0x20) != 0" (parenthesized_expression "(uVar27 & 0x20)" (( "(") (binary_expression "uVar27 & 0x20" (identifier "uVar27") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);\n                          }" ({ "{") (expression_statement "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);" (assignment_expression "uVar18 = uVar13 >> ((byte)uVar27 & 0x1f)" (identifier "uVar18") (= "=") (binary_expression "uVar13 >> ((byte)uVar27 & 0x1f)" (identifier "uVar13") (>> ">>") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (if_statement "if ((uVar18 & 1) != 0) {\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" (if "if") (parenthesized_expression "((uVar18 & 1) != 0)" (( "(") (binary_expression "(uVar18 & 1) != 0" (parenthesized_expression "(uVar18 & 1)" (( "(") (binary_expression "uVar18 & 1" (identifier "uVar18") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            *puVar36 = (short)uVar27;\n                            uVar26 = uVar26 + 4;\n                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                            iVar14 = piVar34[1];\n                            iVar38 = iVar38 + 1;\n                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);\n                          }" ({ "{") (expression_statement "*puVar36 = (short)uVar27;" (assignment_expression "*puVar36 = (short)uVar27" (pointer_expression "*puVar36" (* "*") (identifier "puVar36")) (= "=") (cast_expression "(short)uVar27" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "uVar27"))) (; ";")) (expression_statement "uVar26 = uVar26 + 4;" (assignment_expression "uVar26 = uVar26 + 4" (identifier "uVar26") (= "=") (binary_expression "uVar26 + 4" (identifier "uVar26") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" (* "*") (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar34[8] + iVar38 * 4)" (( "(") (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" (identifier "piVar34") ([ "[") (number_literal "8") (] "]")) (+ "+") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_84")) (; ";")) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" (identifier "iVar14") (= "=") (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);" (assignment_expression "puVar36 = (undefined2 *)(iVar14 + 2 + iVar16)" (identifier "puVar36") (= "=") (cast_expression "(undefined2 *)(iVar14 + 2 + iVar16)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 2 + iVar16)" (( "(") (binary_expression "iVar14 + 2 + iVar16" (binary_expression "iVar14 + 2" (identifier "iVar14") (+ "+") (number_literal "2")) (+ "+") (identifier "iVar16")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar27 = uVar27 + 1;" (assignment_expression "uVar27 = uVar27 + 1" (identifier "uVar27") (= "=") (binary_expression "uVar27 + 1" (identifier "uVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar31 != uVar27)" (( "(") (binary_expression "uVar31 != uVar27" (identifier "uVar31") (!= "!=") (identifier "uVar27")) () ")")) (; ";")) (} "}")))) (if_statement "if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" (if "if") (parenthesized_expression "((piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a)))" (( "(") (binary_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0) &&\n                         (0x3f < *(short *)((int)puVar22 + 0x2a))" (parenthesized_expression "(piVar30[uVar11 * 0x11 + 0x10] < 0)" (( "(") (binary_expression "piVar30[uVar11 * 0x11 + 0x10] < 0" (subscript_expression "piVar30[uVar11 * 0x11 + 0x10]" (identifier "piVar30") ([ "[") (binary_expression "uVar11 * 0x11 + 0x10" (binary_expression "uVar11 * 0x11" (identifier "uVar11") (* "*") (number_literal "0x11")) (+ "+") (number_literal "0x10")) (] "]")) (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(0x3f < *(short *)((int)puVar22 + 0x2a))" (( "(") (binary_expression "0x3f < *(short *)((int)puVar22 + 0x2a)" (number_literal "0x3f") (< "<") (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n                        iVar16 = 0x3f;\n                        while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }\n                        uVar26 = iVar38 * 4;\n                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);\n                      }" ({ "{") (expression_statement "iVar16 = 0x3f;" (assignment_expression "iVar16 = 0x3f" (identifier "iVar16") (= "=") (number_literal "0x3f")) (; ";")) (while_statement "while( true ) {\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;\n                          iVar16 = iVar16 + 1;\n                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;\n                          iVar38 = iVar38 + 1;\n                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;\n                          iVar14 = piVar34[1];\n                        }" ({ "{") (expression_statement "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16;" (assignment_expression "*(short *)(iVar14 + iVar38 * 2) = (short)iVar16" (pointer_expression "*(short *)(iVar14 + iVar38 * 2)" (* "*") (cast_expression "(short *)(iVar14 + iVar38 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + iVar38 * 2)" (( "(") (binary_expression "iVar14 + iVar38 * 2" (identifier "iVar14") (+ "+") (binary_expression "iVar38 * 2" (identifier "iVar38") (* "*") (number_literal "2"))) () ")")))) (= "=") (cast_expression "(short)iVar16" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "iVar16"))) (; ";")) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + iVar38 * 4) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + iVar38 * 4)" (* "*") (cast_expression "(undefined **)(piVar34[8] + iVar38 * 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar34[8] + iVar38 * 4)" (( "(") (binary_expression "piVar34[8] + iVar38 * 4" (subscript_expression "piVar34[8]" (identifier "piVar34") ([ "[") (number_literal "8") (] "]")) (+ "+") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "local_84")) (; ";")) (expression_statement "iVar38 = iVar38 + 1;" (assignment_expression "iVar38 = iVar38 + 1" (identifier "iVar38") (= "=") (binary_expression "iVar38 + 1" (identifier "iVar38") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;" (if "if") (parenthesized_expression "(*(short *)((int)puVar22 + 0x2a) <= iVar16)" (( "(") (binary_expression "*(short *)((int)puVar22 + 0x2a) <= iVar16" (pointer_expression "*(short *)((int)puVar22 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar22 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar22 + 0x2a)" (( "(") (binary_expression "(int)puVar22 + 0x2a" (cast_expression "(int)puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar22")) (+ "+") (number_literal "0x2a")) () ")")))) (<= "<=") (identifier "iVar16")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar14 = piVar34[1];" (assignment_expression "iVar14 = piVar34[1]" (identifier "iVar14") (= "=") (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar26 = iVar38 * 4;" (assignment_expression "uVar26 = iVar38 * 4" (identifier "uVar26") (= "=") (binary_expression "iVar38 * 4" (identifier "iVar38") (* "*") (number_literal "4"))) (; ";")) (expression_statement "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);" (assignment_expression "puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2)" (identifier "puVar36") (= "=") (cast_expression "(undefined2 *)(piVar34[1] + iVar38 * 2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar34[1] + iVar38 * 2)" (( "(") (binary_expression "piVar34[1] + iVar38 * 2" (subscript_expression "piVar34[1]" (identifier "piVar34") ([ "[") (number_literal "1") (] "]")) (+ "+") (binary_expression "iVar38 * 2" (identifier "iVar38") (* "*") (number_literal "2"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*puVar36 = 0xffff;" (assignment_expression "*puVar36 = 0xffff" (pointer_expression "*puVar36" (* "*") (identifier "puVar36")) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "*(undefined **)(piVar34[8] + uVar26) = local_84;" (assignment_expression "*(undefined **)(piVar34[8] + uVar26) = local_84" (pointer_expression "*(undefined **)(piVar34[8] + uVar26)" (* "*") (cast_expression "(undefined **)(piVar34[8] + uVar26)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar34[8] + uVar26)" (( "(") (binary_expression "piVar34[8] + uVar26" (subscript_expression "piVar34[8]" (identifier "piVar34") ([ "[") (number_literal "8") (] "]")) (+ "+") (identifier "uVar26")) () ")")))) (= "=") (identifier "local_84")) (; ";")) (expression_statement "iVar16 = piVar10[10];" (assignment_expression "iVar16 = piVar10[10]" (identifier "iVar16") (= "=") (subscript_expression "piVar10[10]" (identifier "piVar10") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar10[10] = iVar16 + 1;" (assignment_expression "piVar10[10] = iVar16 + 1" (subscript_expression "piVar10[10]" (identifier "piVar10") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_b8[2] = iVar16;" (assignment_expression "local_b8[2] = iVar16" (subscript_expression "local_b8[2]" (identifier "local_b8") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar16")) (; ";")) (expression_statement "FUN_000497a0(local_c0 + 1,0);" (call_expression "FUN_000497a0(local_c0 + 1,0)" (identifier "FUN_000497a0") (argument_list "(local_c0 + 1,0)" (( "(") (binary_expression "local_c0 + 1" (identifier "local_c0") (+ "+") (number_literal "1")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0005c7b0();" (call_expression "FUN_0005c7b0()" (identifier "FUN_0005c7b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar11 = (uint)*(byte *)(local_b8 + 9);" (assignment_expression "uVar11 = (uint)*(byte *)(local_b8 + 9)" (identifier "uVar11") (= "=") (binary_expression "(uint)*(byte *)(local_b8 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_b8 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_b8 + 9)" (( "(") (binary_expression "local_b8 + 9" (identifier "local_b8") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "iVar16 = *(int *)(local_d0[0x13] + 4);" (assignment_expression "iVar16 = *(int *)(local_d0[0x13] + 4)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(local_d0[0x13] + 4)" (* "*") (cast_expression "(int *)(local_d0[0x13] + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_d0[0x13] + 4)" (( "(") (binary_expression "local_d0[0x13] + 4" (subscript_expression "local_d0[0x13]" (identifier "local_d0") ([ "[") (number_literal "0x13") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar14 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar14 = uVar11 * 0x44 + iVar16" (identifier "iVar14") (= "=") (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" (identifier "uVar11") (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar16"))) (; ";")) (if_statement "if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }\n                      else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" (if "if") (parenthesized_expression "((*(byte *)(iVar14 + 0x2d) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(iVar14 + 0x2d) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar14 + 0x2d) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar14 + 0x2d) & 0x10" (pointer_expression "*(byte *)(iVar14 + 0x2d)" (* "*") (cast_expression "(byte *)(iVar14 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x2d)" (( "(") (binary_expression "iVar14 + 0x2d" (identifier "iVar14") (+ "+") (number_literal "0x2d")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar14 = FUN_000497a0(0,0);\n                        local_b4 = (int *)0x0;\n                      }" ({ "{") (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" (identifier "iVar14") (= "=") (call_expression "FUN_000497a0(0,0)" (identifier "FUN_000497a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_b4 = (int *)0x0;" (assignment_expression "local_b4 = (int *)0x0" (identifier "local_b4") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" (else "else") (compound_statement "{\n                        local_b4 = (int *)FUN_000497a0(0,0);\n                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));\n                        iVar14 = FUN_000497a0(0,0);\n                      }" ({ "{") (expression_statement "local_b4 = (int *)FUN_000497a0(0,0);" (assignment_expression "local_b4 = (int *)FUN_000497a0(0,0)" (identifier "local_b4") (= "=") (cast_expression "(int *)FUN_000497a0(0,0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000497a0(0,0)" (identifier "FUN_000497a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));" (call_expression "FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20))" (identifier "FUN_000497a0") (argument_list "(0,*(undefined4 *)(iVar14 + 0x20))" (( "(") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(iVar14 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar14 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x20)" (( "(") (binary_expression "iVar14 + 0x20" (identifier "iVar14") (+ "+") (number_literal "0x20")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar14 = FUN_000497a0(0,0);" (assignment_expression "iVar14 = FUN_000497a0(0,0)" (identifier "iVar14") (= "=") (call_expression "FUN_000497a0(0,0)" (identifier "FUN_000497a0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")))) (if_statement "if (local_74 != 0) {\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" (if "if") (parenthesized_expression "(local_74 != 0)" (( "(") (binary_expression "local_74 != 0" (identifier "local_74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar28 = piVar10[0xe];\n                        iVar37 = iVar28 + -1;\n                        piVar10[0xe] = iVar37;\n                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);\n                        piVar23[9] = piVar23[9] | 0x20000;\n                      }" ({ "{") (expression_statement "iVar28 = piVar10[0xe];" (assignment_expression "iVar28 = piVar10[0xe]" (identifier "iVar28") (= "=") (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "iVar37 = iVar28 + -1;" (assignment_expression "iVar37 = iVar28 + -1" (identifier "iVar37") (= "=") (binary_expression "iVar28 + -1" (identifier "iVar28") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar10[0xe] = iVar37;" (assignment_expression "piVar10[0xe] = iVar37" (subscript_expression "piVar10[0xe]" (identifier "piVar10") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "iVar37")) (; ";")) (expression_statement "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);" (call_expression "FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28)" (identifier "FUN_000958f0") (argument_list "(piVar10,local_74,iVar37,0x10,iVar28)" (( "(") (identifier "piVar10") (, ",") (identifier "local_74") (, ",") (identifier "iVar37") (, ",") (number_literal "0x10") (, ",") (identifier "iVar28") () ")"))) (; ";")) (expression_statement "piVar23[9] = piVar23[9] | 0x20000;" (assignment_expression "piVar23[9] = piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" (identifier "piVar23") ([ "[") (number_literal "9") (] "]")) (= "=") (binary_expression "piVar23[9] | 0x20000" (subscript_expression "piVar23[9]" (identifier "piVar23") ([ "[") (number_literal "9") (] "]")) (| "|") (number_literal "0x20000"))) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)piVar10 + 0x13) == '\0') {\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }\n                      else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" (if "if") (parenthesized_expression "(*(char *)((int)piVar10 + 0x13) == '\0')" (( "(") (binary_expression "*(char *)((int)piVar10 + 0x13) == '\0'" (pointer_expression "*(char *)((int)piVar10 + 0x13)" (* "*") (cast_expression "(char *)((int)piVar10 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x13)" (( "(") (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x13")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        iVar28 = piVar10[0xb] + 1;\n                        piVar10[0xb] = iVar28;\n                      }" ({ "{") (expression_statement "iVar28 = piVar10[0xb] + 1;" (assignment_expression "iVar28 = piVar10[0xb] + 1" (identifier "iVar28") (= "=") (binary_expression "piVar10[0xb] + 1" (subscript_expression "piVar10[0xb]" (identifier "piVar10") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar10[0xb] = iVar28;" (assignment_expression "piVar10[0xb] = iVar28" (subscript_expression "piVar10[0xb]" (identifier "piVar10") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "iVar28")) (; ";")) (} "}")) (else_clause "else {\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" (else "else") (compound_statement "{\n                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;\n                        *(byte *)((int)piVar10 + 0x13) = bVar8;\n                        iVar28 = piVar10[bVar8 + 0x24];\n                      }" ({ "{") (expression_statement "bVar8 = *(char *)((int)piVar10 + 0x13) - 1;" (assignment_expression "bVar8 = *(char *)((int)piVar10 + 0x13) - 1" (identifier "bVar8") (= "=") (binary_expression "*(char *)((int)piVar10 + 0x13) - 1" (pointer_expression "*(char *)((int)piVar10 + 0x13)" (* "*") (cast_expression "(char *)((int)piVar10 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x13)" (( "(") (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x13")) () ")")))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)((int)piVar10 + 0x13) = bVar8;" (assignment_expression "*(byte *)((int)piVar10 + 0x13) = bVar8" (pointer_expression "*(byte *)((int)piVar10 + 0x13)" (* "*") (cast_expression "(byte *)((int)piVar10 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar10 + 0x13)" (( "(") (binary_expression "(int)piVar10 + 0x13" (cast_expression "(int)piVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar10")) (+ "+") (number_literal "0x13")) () ")")))) (= "=") (identifier "bVar8")) (; ";")) (expression_statement "iVar28 = piVar10[bVar8 + 0x24];" (assignment_expression "iVar28 = piVar10[bVar8 + 0x24]" (identifier "iVar28") (= "=") (subscript_expression "piVar10[bVar8 + 0x24]" (identifier "piVar10") ([ "[") (binary_expression "bVar8 + 0x24" (identifier "bVar8") (+ "+") (number_literal "0x24")) (] "]"))) (; ";")) (} "}")))) (expression_statement "iVar37 = FUN_0009c790(iVar28,0,0,0,0);" (assignment_expression "iVar37 = FUN_0009c790(iVar28,0,0,0,0)" (identifier "iVar37") (= "=") (call_expression "FUN_0009c790(iVar28,0,0,0,0)" (identifier "FUN_0009c790") (argument_list "(iVar28,0,0,0,0)" (( "(") (identifier "iVar28") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "FUN_000497a0(iVar28,0);" (call_expression "FUN_000497a0(iVar28,0)" (identifier "FUN_000497a0") (argument_list "(iVar28,0)" (( "(") (identifier "iVar28") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (0 < piVar17[0x1a]) {\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" (if "if") (parenthesized_expression "(0 < piVar17[0x1a])" (( "(") (binary_expression "0 < piVar17[0x1a]" (number_literal "0") (< "<") (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]"))) () ")")) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;\n                      }" ({ "{") (expression_statement "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10" (pointer_expression "*(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12)" (( "(") (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12" (binary_expression "piVar17[0x19] + piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x19]" (identifier "piVar17") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "piVar17[0x1a] * 0x14" (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]")) (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "0x10")) (; ";")) (} "}"))) (if_statement "if (local_74 != 0) {\n                        FUN_00049570();\n                      }" (if "if") (parenthesized_expression "(local_74 != 0)" (( "(") (binary_expression "local_74 != 0" (identifier "local_74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        FUN_00049570();\n                      }" ({ "{") (expression_statement "FUN_00049570();" (call_expression "FUN_00049570()" (identifier "FUN_00049570") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {\n                        FUN_000497a0(iVar14 + 1,0);\n                      }\n                      else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" (if "if") (parenthesized_expression "((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0)" (( "(") (binary_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0" (parenthesized_expression "(*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10)" (( "(") (binary_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10" (pointer_expression "*(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" (* "*") (cast_expression "(byte *)(iVar16 + 0x2d + uVar11 * 0x44)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x2d + uVar11 * 0x44)" (( "(") (binary_expression "iVar16 + 0x2d + uVar11 * 0x44" (binary_expression "iVar16 + 0x2d" (identifier "iVar16") (+ "+") (number_literal "0x2d")) (+ "+") (binary_expression "uVar11 * 0x44" (identifier "uVar11") (* "*") (number_literal "0x44"))) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        FUN_000497a0(iVar14 + 1,0);\n                      }" ({ "{") (expression_statement "FUN_000497a0(iVar14 + 1,0);" (call_expression "FUN_000497a0(iVar14 + 1,0)" (identifier "FUN_000497a0") (argument_list "(iVar14 + 1,0)" (( "(") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" (else "else") (compound_statement "{\n                        if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }\n                        puVar20 = &UNK_000ac9e5 + unaff_EDI;\n                        if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }\n                        *(int *)(puVar20 + 8) = iVar37 + iVar38;\n                        iVar16 = uVar11 * 0x44 + iVar16;\n                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);\n                        FUN_000497a0(iVar14,0);\n                        pbVar1 = (byte *)(iVar16 + 0x2d);\n                        *pbVar1 = *pbVar1 & 0xef;\n                      }" ({ "{") (if_statement "if ((int)local_b4 < 0) {\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" (if "if") (parenthesized_expression "((int)local_b4 < 0)" (( "(") (binary_expression "(int)local_b4 < 0" (cast_expression "(int)local_b4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b4")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                          local_b4 = (int *)(piVar17[0x1a] + -1);\n                        }" ({ "{") (expression_statement "local_b4 = (int *)(piVar17[0x1a] + -1);" (assignment_expression "local_b4 = (int *)(piVar17[0x1a] + -1)" (identifier "local_b4") (= "=") (cast_expression "(int *)(piVar17[0x1a] + -1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x1a] + -1)" (( "(") (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" (identifier "puVar20") (= "=") (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" (& "&") (identifier "UNK_000ac9e5")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" (if "if") (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar17 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar17 + 0x4d)" (( "(") (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);\n                        }" ({ "{") (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" (identifier "puVar20") (= "=") (cast_expression "(undefined *)(piVar17[0x19] + (int)local_b4 * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x19] + (int)local_b4 * 0x14)" (( "(") (binary_expression "piVar17[0x19] + (int)local_b4 * 0x14" (subscript_expression "piVar17[0x19]" (identifier "piVar17") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "(int)local_b4 * 0x14" (cast_expression "(int)local_b4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_b4")) (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar20 + 8) = iVar37 + iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar37 + iVar38" (pointer_expression "*(int *)(puVar20 + 8)" (* "*") (cast_expression "(int *)(puVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 8)" (( "(") (binary_expression "puVar20 + 8" (identifier "puVar20") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar37 + iVar38" (identifier "iVar37") (+ "+") (identifier "iVar38"))) (; ";")) (expression_statement "iVar16 = uVar11 * 0x44 + iVar16;" (assignment_expression "iVar16 = uVar11 * 0x44 + iVar16" (identifier "iVar16") (= "=") (binary_expression "uVar11 * 0x44 + iVar16" (binary_expression "uVar11 * 0x44" (identifier "uVar11") (* "*") (number_literal "0x44")) (+ "+") (identifier "iVar16"))) (; ";")) (expression_statement "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);" (call_expression "FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" (identifier "FUN_00030ec0") (argument_list "(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1)" (( "(") (subscript_expression "local_b8[1]" (identifier "local_b8") ([ "[") (number_literal "1") (] "]")) (, ",") (pointer_expression "*(undefined4 *)(iVar16 + 0x28)" (* "*") (cast_expression "(undefined4 *)(iVar16 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x28)" (( "(") (binary_expression "iVar16 + 0x28" (identifier "iVar16") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_000497a0(iVar14,0);" (call_expression "FUN_000497a0(iVar14,0)" (identifier "FUN_000497a0") (argument_list "(iVar14,0)" (( "(") (identifier "iVar14") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "pbVar1 = (byte *)(iVar16 + 0x2d);" (assignment_expression "pbVar1 = (byte *)(iVar16 + 0x2d)" (identifier "pbVar1") (= "=") (cast_expression "(byte *)(iVar16 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + 0x2d)" (( "(") (binary_expression "iVar16 + 0x2d" (identifier "iVar16") (+ "+") (number_literal "0x2d")) () ")")))) (; ";")) (expression_statement "*pbVar1 = *pbVar1 & 0xef;" (assignment_expression "*pbVar1 = *pbVar1 & 0xef" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (= "=") (binary_expression "*pbVar1 & 0xef" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (& "&") (number_literal "0xef"))) (; ";")) (} "}")))) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" (identifier "iVar38") (= "=") (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (if_statement "if (0 < iVar38) {\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" (if "if") (parenthesized_expression "(0 < iVar38)" (( "(") (binary_expression "0 < iVar38" (number_literal "0") (< "<") (identifier "iVar38")) () ")")) (compound_statement "{\n                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;\n                        iVar38 = piVar17[0x1a];\n                      }" ({ "{") (expression_statement "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;" (assignment_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3" (pointer_expression "*(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" (* "*") (cast_expression "(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14 + -0x12)" (( "(") (binary_expression "piVar17[0x19] + iVar38 * 0x14 + -0x12" (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" (identifier "piVar17") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar38 * 0x14" (identifier "iVar38") (* "*") (number_literal "0x14"))) (+ "+") (number_literal "-0x12")) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "iVar38 = piVar17[0x1a];" (assignment_expression "iVar38 = piVar17[0x1a]" (identifier "iVar38") (= "=") (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (if_statement "if (iVar14 < 0) {\n                        iVar14 = iVar38 + -1;\n                      }" (if "if") (parenthesized_expression "(iVar14 < 0)" (( "(") (binary_expression "iVar14 < 0" (identifier "iVar14") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar14 = iVar38 + -1;\n                      }" ({ "{") (expression_statement "iVar14 = iVar38 + -1;" (assignment_expression "iVar14 = iVar38 + -1" (identifier "iVar14") (= "=") (binary_expression "iVar38 + -1" (identifier "iVar38") (+ "+") (number_literal "-1"))) (; ";")) (} "}"))) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" (identifier "puVar20") (= "=") (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" (& "&") (identifier "UNK_000ac9e5")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" (if "if") (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar17 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar17 + 0x4d)" (( "(") (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);\n                      }" ({ "{") (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14)" (identifier "puVar20") (= "=") (cast_expression "(undefined *)(piVar17[0x19] + iVar14 * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x19] + iVar14 * 0x14)" (( "(") (binary_expression "piVar17[0x19] + iVar14 * 0x14" (subscript_expression "piVar17[0x19]" (identifier "piVar17") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar14 * 0x14" (identifier "iVar14") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar20 + 8) = iVar38;" (assignment_expression "*(int *)(puVar20 + 8) = iVar38" (pointer_expression "*(int *)(puVar20 + 8)" (* "*") (cast_expression "(int *)(puVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 8)" (( "(") (binary_expression "puVar20 + 8" (identifier "puVar20") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar38")) (; ";")) (if_statement "if (iVar28 != 0) {\n                        FUN_0002f640();\n                      }" (if "if") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                        FUN_0002f640();\n                      }" ({ "{") (expression_statement "FUN_0002f640();" (call_expression "FUN_0002f640()" (identifier "FUN_0002f640") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar38 = piVar17[0x1a] + -1;" (assignment_expression "iVar38 = piVar17[0x1a] + -1" (identifier "iVar38") (= "=") (binary_expression "piVar17[0x1a] + -1" (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (-1 < iVar12) {\n                        iVar38 = iVar12;\n                      }" (if "if") (parenthesized_expression "(-1 < iVar12)" (( "(") (binary_expression "-1 < iVar12" (number_literal "-1") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n                        iVar38 = iVar12;\n                      }" ({ "{") (expression_statement "iVar38 = iVar12;" (assignment_expression "iVar38 = iVar12" (identifier "iVar38") (= "=") (identifier "iVar12")) (; ";")) (} "}"))) (expression_statement "puVar20 = &UNK_000ac9e5 + unaff_EDI;" (assignment_expression "puVar20 = &UNK_000ac9e5 + unaff_EDI" (identifier "puVar20") (= "=") (binary_expression "&UNK_000ac9e5 + unaff_EDI" (pointer_expression "&UNK_000ac9e5" (& "&") (identifier "UNK_000ac9e5")) (+ "+") (identifier "unaff_EDI"))) (; ";")) (if_statement "if (*(char *)(*piVar17 + 0x4d) == '\0') {\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" (if "if") (parenthesized_expression "(*(char *)(*piVar17 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(*piVar17 + 0x4d) == '\0'" (pointer_expression "*(char *)(*piVar17 + 0x4d)" (* "*") (cast_expression "(char *)(*piVar17 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar17 + 0x4d)" (( "(") (binary_expression "*piVar17 + 0x4d" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);\n                      }" ({ "{") (expression_statement "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);" (assignment_expression "puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14)" (identifier "puVar20") (= "=") (cast_expression "(undefined *)(piVar17[0x19] + iVar38 * 0x14)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar17[0x19] + iVar38 * 0x14)" (( "(") (binary_expression "piVar17[0x19] + iVar38 * 0x14" (subscript_expression "piVar17[0x19]" (identifier "piVar17") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (binary_expression "iVar38 * 0x14" (identifier "iVar38") (* "*") (number_literal "0x14"))) () ")")))) (; ";")) (} "}"))) (expression_statement "*(int *)(puVar20 + 8) = piVar17[0x1a];" (assignment_expression "*(int *)(puVar20 + 8) = piVar17[0x1a]" (pointer_expression "*(int *)(puVar20 + 8)" (* "*") (cast_expression "(int *)(puVar20 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar20 + 8)" (( "(") (binary_expression "puVar20 + 8" (identifier "puVar20") (+ "+") (number_literal "8")) () ")")))) (= "=") (subscript_expression "piVar17[0x1a]" (identifier "piVar17") ([ "[") (number_literal "0x1a") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_000a0ba5:\n                    if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" (statement_identifier "LAB_000a0ba5") (: ":") (if_statement "if (local_74 != 0) {\n                      FUN_00039fe0();\n                    }" (if "if") (parenthesized_expression "(local_74 != 0)" (( "(") (binary_expression "local_74 != 0" (identifier "local_74") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      FUN_00039fe0();\n                    }" ({ "{") (expression_statement "FUN_00039fe0();" (call_expression "FUN_00039fe0()" (identifier "FUN_00039fe0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a0bd0;" (goto "goto") (statement_identifier "LAB_000a0bd0") (; ";"))) (} "}"))) (expression_statement "piVar17 = (int *)piVar10[0x1d];" (assignment_expression "piVar17 = (int *)piVar10[0x1d]" (identifier "piVar17") (= "=") (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]")))) (; ";")) (if_statement "if ((int *)piVar10[0x1d] == (int *)0x0) {\n                    piVar17 = piVar10;\n                  }" (if "if") (parenthesized_expression "((int *)piVar10[0x1d] == (int *)0x0)" (( "(") (binary_expression "(int *)piVar10[0x1d] == (int *)0x0" (cast_expression "(int *)piVar10[0x1d]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar10[0x1d]" (identifier "piVar10") ([ "[") (number_literal "0x1d") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    piVar17 = piVar10;\n                  }" ({ "{") (expression_statement "piVar17 = piVar10;" (assignment_expression "piVar17 = piVar10" (identifier "piVar17") (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)piVar17 + 0xc5) == '\x02') {\n                    FUN_00067300(uVar29);\n                  }" (if "if") (parenthesized_expression "(*(char *)((int)piVar17 + 0xc5) == '\x02')" (( "(") (binary_expression "*(char *)((int)piVar17 + 0xc5) == '\x02'" (pointer_expression "*(char *)((int)piVar17 + 0xc5)" (* "*") (cast_expression "(char *)((int)piVar17 + 0xc5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar17 + 0xc5)" (( "(") (binary_expression "(int)piVar17 + 0xc5" (cast_expression "(int)piVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar17")) (+ "+") (number_literal "0xc5")) () ")")))) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n                    FUN_00067300(uVar29);\n                  }" ({ "{") (expression_statement "FUN_00067300(uVar29);" (call_expression "FUN_00067300(uVar29)" (identifier "FUN_00067300") (argument_list "(uVar29)" (( "(") (identifier "uVar29") () ")"))) (; ";")) (} "}"))) (expression_statement "local_b8[8] = *(int *)(iVar3 + 0x68);" (assignment_expression "local_b8[8] = *(int *)(iVar3 + 0x68)" (subscript_expression "local_b8[8]" (identifier "local_b8") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*(int *)(iVar3 + 0x68)" (* "*") (cast_expression "(int *)(iVar3 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x68)" (( "(") (binary_expression "iVar3 + 0x68" (identifier "iVar3") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "iVar12 = local_88 + 1;" (assignment_expression "iVar12 = local_88 + 1" (identifier "iVar12") (= "=") (binary_expression "local_88 + 1" (identifier "local_88") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar40 = FUN_0009d860(local_88,local_b8,uVar40);" (assignment_expression "uVar40 = FUN_0009d860(local_88,local_b8,uVar40)" (identifier "uVar40") (= "=") (call_expression "FUN_0009d860(local_88,local_b8,uVar40)" (identifier "FUN_0009d860") (argument_list "(local_88,local_b8,uVar40)" (( "(") (identifier "local_88") (, ",") (identifier "local_b8") (, ",") (identifier "uVar40") () ")")))) (; ";")) (expression_statement "local_d0[8] = local_b8[6];" (assignment_expression "local_d0[8] = local_b8[6]" (subscript_expression "local_d0[8]" (identifier "local_d0") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "local_b8[6]" (identifier "local_b8") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_b8 = local_b8 + 0x11;" (assignment_expression "local_b8 = local_b8 + 0x11" (identifier "local_b8") (= "=") (binary_expression "local_b8 + 0x11" (identifier "local_b8") (+ "+") (number_literal "0x11"))) (; ";")) (expression_statement "local_88 = iVar12;" (assignment_expression "local_88 = iVar12" (identifier "local_88") (= "=") (identifier "iVar12")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_a0 != iVar12)" (( "(") (binary_expression "local_a0 != iVar12" (identifier "local_a0") (!= "!=") (identifier "iVar12")) () ")")) (; ";")) (goto_statement "goto LAB_000a0bf2;" (goto "goto") (statement_identifier "LAB_000a0bf2") (; ";")) (} "}"))) (} "}"))))) (} "}"))) (} "}")) (else_clause "else {\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" (else "else") (compound_statement "{\nLAB_000a0070:\n          iVar38 = local_4c;\n          piVar17 = local_58[0];\n          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;\n          uVar13 = iVar12 + 8;\n          iVar12 = *(int *)*local_58[0];\n          *(undefined4 *)(local_4c + 0x24) = 0;\n          local_40 = 20000;\n          *(int *)(local_4c + 0x30) = local_4c + 0x38;\n          *(undefined2 *)(local_4c + 0x28) = 0;\n          *(undefined2 *)(local_4c + 0x2c) = 3;\n          if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }\n          FUN_000310d0();\n          FUN_00063ca0();\n          if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }\n        }" ({ "{") (labeled_statement "LAB_000a0070:\n          iVar38 = local_4c;" (statement_identifier "LAB_000a0070") (: ":") (expression_statement "iVar38 = local_4c;" (assignment_expression "iVar38 = local_4c" (identifier "iVar38") (= "=") (identifier "local_4c")) (; ";"))) (expression_statement "piVar17 = local_58[0];" (assignment_expression "piVar17 = local_58[0]" (identifier "piVar17") (= "=") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;" (assignment_expression "uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (identifier "uVar11") (= "=") (binary_expression "iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8")) (+ "+") (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44" (binary_expression "(uint)*(byte *)((int)local_58[0] + 0x2e)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)local_58[0] + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_58[0] + 0x2e)" (( "(") (binary_expression "(int)local_58[0] + 0x2e" (cast_expression "(int)local_58[0]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]"))) (+ "+") (number_literal "0x2e")) () ")")))) (* "*") (number_literal "0x44")))) (; ";")) (expression_statement "uVar13 = iVar12 + 8;" (assignment_expression "uVar13 = iVar12 + 8" (identifier "uVar13") (= "=") (binary_expression "iVar12 + 8" (identifier "iVar12") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "iVar12 = *(int *)*local_58[0];" (assignment_expression "iVar12 = *(int *)*local_58[0]" (identifier "iVar12") (= "=") (pointer_expression "*(int *)*local_58[0]" (* "*") (cast_expression "(int *)*local_58[0]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_58[0]" (* "*") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")))))) (; ";")) (expression_statement "*(undefined4 *)(local_4c + 0x24) = 0;" (assignment_expression "*(undefined4 *)(local_4c + 0x24) = 0" (pointer_expression "*(undefined4 *)(local_4c + 0x24)" (* "*") (cast_expression "(undefined4 *)(local_4c + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x24)" (( "(") (binary_expression "local_4c + 0x24" (identifier "local_4c") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = 20000;" (assignment_expression "local_40 = 20000" (identifier "local_40") (= "=") (number_literal "20000")) (; ";")) (expression_statement "*(int *)(local_4c + 0x30) = local_4c + 0x38;" (assignment_expression "*(int *)(local_4c + 0x30) = local_4c + 0x38" (pointer_expression "*(int *)(local_4c + 0x30)" (* "*") (cast_expression "(int *)(local_4c + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x30)" (( "(") (binary_expression "local_4c + 0x30" (identifier "local_4c") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (binary_expression "local_4c + 0x38" (identifier "local_4c") (+ "+") (number_literal "0x38"))) (; ";")) (expression_statement "*(undefined2 *)(local_4c + 0x28) = 0;" (assignment_expression "*(undefined2 *)(local_4c + 0x28) = 0" (pointer_expression "*(undefined2 *)(local_4c + 0x28)" (* "*") (cast_expression "(undefined2 *)(local_4c + 0x28)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x28)" (( "(") (binary_expression "local_4c + 0x28" (identifier "local_4c") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined2 *)(local_4c + 0x2c) = 3;" (assignment_expression "*(undefined2 *)(local_4c + 0x2c) = 3" (pointer_expression "*(undefined2 *)(local_4c + 0x2c)" (* "*") (cast_expression "(undefined2 *)(local_4c + 0x2c)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_4c + 0x2c)" (( "(") (binary_expression "local_4c + 0x2c" (identifier "local_4c") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "3")) (; ";")) (if_statement "if (uVar13 < uVar11) {\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" (if "if") (parenthesized_expression "(uVar13 < uVar11)" (( "(") (binary_expression "uVar13 < uVar11" (identifier "uVar13") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n            cVar7 = '\0';\n            do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);\n          }" ({ "{") (expression_statement "cVar7 = '\0';" (assignment_expression "cVar7 = '\0'" (identifier "cVar7") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (do_statement "do {\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            } while (uVar13 < uVar11);" (do "do") (compound_statement "{\n              *(char *)(iVar38 + 0x10) = cVar7;\n              local_40 = local_40 + 1000;\n              if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }\nLAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;\n              *(uint *)(iVar38 + 0xc) = uVar43;\n              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }\n              if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }\n              cVar7 = cVar7 + '\x01';\n              uVar13 = uVar13 + 0x44;\n            }" ({ "{") (expression_statement "*(char *)(iVar38 + 0x10) = cVar7;" (assignment_expression "*(char *)(iVar38 + 0x10) = cVar7" (pointer_expression "*(char *)(iVar38 + 0x10)" (* "*") (cast_expression "(char *)(iVar38 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x10)" (( "(") (binary_expression "iVar38 + 0x10" (identifier "iVar38") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "cVar7")) (; ";")) (expression_statement "local_40 = local_40 + 1000;" (assignment_expression "local_40 = local_40 + 1000" (identifier "local_40") (= "=") (binary_expression "local_40 + 1000" (identifier "local_40") (+ "+") (number_literal "1000"))) (; ";")) (if_statement "if (piVar17[0x7a] < 1) {\n                uVar25 = 0;\n                uVar43 = 0;\n              }\n              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" (if "if") (parenthesized_expression "(piVar17[0x7a] < 1)" (( "(") (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" (identifier "piVar17") ([ "[") (number_literal "0x7a") (] "]")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                uVar25 = 0;\n                uVar43 = 0;\n              }" ({ "{") (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" (else "else") (if_statement "if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {\n                uVar25 = 1;\n                uVar43 = 0;\n              }\n              else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" (if "if") (parenthesized_expression "(*(int *)(uVar13 + 0x28) == piVar17[0x7b])" (( "(") (binary_expression "*(int *)(uVar13 + 0x28) == piVar17[0x7b]" (pointer_expression "*(int *)(uVar13 + 0x28)" (* "*") (cast_expression "(int *)(uVar13 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 + 0x28)" (( "(") (binary_expression "uVar13 + 0x28" (identifier "uVar13") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (subscript_expression "piVar17[0x7b]" (identifier "piVar17") ([ "[") (number_literal "0x7b") (] "]"))) () ")")) (compound_statement "{\n                uVar25 = 1;\n                uVar43 = 0;\n              }" ({ "{") (expression_statement "uVar25 = 1;" (assignment_expression "uVar25 = 1" (identifier "uVar25") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" (else "else") (compound_statement "{\n                uVar25 = 0;\n                do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);\n                bVar8 = (byte)uVar31 & 0x1f;\n                uVar26 = 1 << ((byte)uVar31 & 0x1f);\n                uVar25 = uVar26;\n                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;\n                if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }\n              }" ({ "{") (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);" (do "do") (compound_statement "{\n                  uVar31 = uVar25 + 1;\n                  if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }\n                  iVar16 = uVar25 + 0x7c;\n                  uVar25 = uVar31;\n                }" ({ "{") (expression_statement "uVar31 = uVar25 + 1;" (assignment_expression "uVar31 = uVar25 + 1" (identifier "uVar31") (= "=") (binary_expression "uVar25 + 1" (identifier "uVar25") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar31 == piVar17[0x7a]) {\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" (if "if") (parenthesized_expression "(uVar31 == piVar17[0x7a])" (( "(") (binary_expression "uVar31 == piVar17[0x7a]" (identifier "uVar31") (== "==") (subscript_expression "piVar17[0x7a]" (identifier "piVar17") ([ "[") (number_literal "0x7a") (] "]"))) () ")")) (compound_statement "{\n                    uVar25 = 0;\n                    uVar43 = 0;\n                    goto LAB_000a014b;\n                  }" ({ "{") (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000a014b;" (goto "goto") (statement_identifier "LAB_000a014b") (; ";")) (} "}"))) (expression_statement "iVar16 = uVar25 + 0x7c;" (assignment_expression "iVar16 = uVar25 + 0x7c" (identifier "iVar16") (= "=") (binary_expression "uVar25 + 0x7c" (identifier "uVar25") (+ "+") (number_literal "0x7c"))) (; ";")) (expression_statement "uVar25 = uVar31;" (assignment_expression "uVar25 = uVar31" (identifier "uVar25") (= "=") (identifier "uVar31")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(int *)(uVar13 + 0x28) != piVar17[iVar16])" (( "(") (binary_expression "*(int *)(uVar13 + 0x28) != piVar17[iVar16]" (pointer_expression "*(int *)(uVar13 + 0x28)" (* "*") (cast_expression "(int *)(uVar13 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 + 0x28)" (( "(") (binary_expression "uVar13 + 0x28" (identifier "uVar13") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (subscript_expression "piVar17[iVar16]" (identifier "piVar17") ([ "[") (identifier "iVar16") (] "]"))) () ")")) (; ";")) (expression_statement "bVar8 = (byte)uVar31 & 0x1f;" (assignment_expression "bVar8 = (byte)uVar31 & 0x1f" (identifier "bVar8") (= "=") (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar31")) (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar26 = 1 << ((byte)uVar31 & 0x1f);" (assignment_expression "uVar26 = 1 << ((byte)uVar31 & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "1 << ((byte)uVar31 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "((byte)uVar31 & 0x1f)" (( "(") (binary_expression "(byte)uVar31 & 0x1f" (cast_expression "(byte)uVar31" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar31")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar25 = uVar26;" (assignment_expression "uVar25 = uVar26" (identifier "uVar25") (= "=") (identifier "uVar26")) (; ";")) (expression_statement "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;" (assignment_expression "uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8" (identifier "uVar43") (= "=") (binary_expression "0 << bVar8 | 1U >> 0x20 - bVar8" (binary_expression "0 << bVar8" (number_literal "0") (<< "<<") (identifier "bVar8")) (| "|") (binary_expression "1U >> 0x20 - bVar8" (number_literal "1U") (>> ">>") (binary_expression "0x20 - bVar8" (number_literal "0x20") (- "-") (identifier "bVar8"))))) (; ";")) (if_statement "if ((uVar31 & 0x20) != 0) {\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" (if "if") (parenthesized_expression "((uVar31 & 0x20) != 0)" (( "(") (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" (( "(") (binary_expression "uVar31 & 0x20" (identifier "uVar31") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar25 = 0;\n                  uVar43 = uVar26;\n                }" ({ "{") (expression_statement "uVar25 = 0;" (assignment_expression "uVar25 = 0" (identifier "uVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar43 = uVar26;" (assignment_expression "uVar43 = uVar26" (identifier "uVar43") (= "=") (identifier "uVar26")) (; ";")) (} "}"))) (} "}")))))) (labeled_statement "LAB_000a014b:\n              *(uint *)(iVar38 + 8) = uVar25;" (statement_identifier "LAB_000a014b") (: ":") (expression_statement "*(uint *)(iVar38 + 8) = uVar25;" (assignment_expression "*(uint *)(iVar38 + 8) = uVar25" (pointer_expression "*(uint *)(iVar38 + 8)" (* "*") (cast_expression "(uint *)(iVar38 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 8)" (( "(") (binary_expression "iVar38 + 8" (identifier "iVar38") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "uVar25")) (; ";"))) (expression_statement "*(uint *)(iVar38 + 0xc) = uVar43;" (assignment_expression "*(uint *)(iVar38 + 0xc) = uVar43" (pointer_expression "*(uint *)(iVar38 + 0xc)" (* "*") (cast_expression "(uint *)(iVar38 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0xc)" (( "(") (binary_expression "iVar38 + 0xc" (identifier "iVar38") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar43")) (; ";")) (if_statement "if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }\n              else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0" (pointer_expression "*(int *)(*(int *)(uVar13 + 0x10) + 0x38)" (* "*") (cast_expression "(int *)(*(int *)(uVar13 + 0x10) + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar13 + 0x10) + 0x38)" (( "(") (binary_expression "*(int *)(uVar13 + 0x10) + 0x38" (pointer_expression "*(int *)(uVar13 + 0x10)" (* "*") (cast_expression "(int *)(uVar13 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar13 + 0x10)" (( "(") (binary_expression "uVar13 + 0x10" (identifier "uVar13") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar16 = FUN_00064890();\n                uVar43 = 0;\n                local_d8 = 0;\n              }" ({ "{") (expression_statement "iVar16 = FUN_00064890();" (assignment_expression "iVar16 = FUN_00064890()" (identifier "iVar16") (= "=") (call_expression "FUN_00064890()" (identifier "FUN_00064890") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" (identifier "local_d8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" (else "else") (compound_statement "{\n                uVar25 = uVar13 + 0x44;\n                uVar43 = 0;\n                local_d8 = 0;\n                while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }\nLAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);\n              }" ({ "{") (expression_statement "uVar25 = uVar13 + 0x44;" (assignment_expression "uVar25 = uVar13 + 0x44" (identifier "uVar25") (= "=") (binary_expression "uVar13 + 0x44" (identifier "uVar13") (+ "+") (number_literal "0x44"))) (; ";")) (expression_statement "uVar43 = 0;" (assignment_expression "uVar43 = 0" (identifier "uVar43") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_d8 = 0;" (assignment_expression "local_d8 = 0" (identifier "local_d8") (= "=") (number_literal "0")) (; ";")) (while_statement "while (uVar25 < uVar11) {\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" (while "while") (parenthesized_expression "(uVar25 < uVar11)" (( "(") (binary_expression "uVar25 < uVar11" (identifier "uVar25") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\nLAB_000a0d2c:\n                  uVar31 = uVar25;\n                  uVar25 = uVar25 + 0x44;\n                  if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }\n                  if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }\n                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }\n                  uVar31 = 1;\n                  uVar26 = 0;\nLAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;\n                  local_d8 = local_d8 | uVar26;\n                }" ({ "{") (labeled_statement "LAB_000a0d2c:\n                  uVar31 = uVar25;" (statement_identifier "LAB_000a0d2c") (: ":") (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" (identifier "uVar31") (= "=") (identifier "uVar25")) (; ";"))) (expression_statement "uVar25 = uVar25 + 0x44;" (assignment_expression "uVar25 = uVar25 + 0x44" (identifier "uVar25") (= "=") (binary_expression "uVar25 + 0x44" (identifier "uVar25") (+ "+") (number_literal "0x44"))) (; ";")) (if_statement "if (local_d8 == 0 && uVar43 == 0) {\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" (if "if") (parenthesized_expression "(local_d8 == 0 && uVar43 == 0)" (( "(") (binary_expression "local_d8 == 0 && uVar43 == 0" (binary_expression "local_d8 == 0" (identifier "local_d8") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar43 == 0" (identifier "uVar43") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }\n                  }" ({ "{") (while_statement "while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" (while "while") (parenthesized_expression "(uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0)" (( "(") (comma_expression "uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0" (assignment_expression "uVar25 = uVar31 + 0x44" (identifier "uVar25") (= "=") (binary_expression "uVar31 + 0x44" (identifier "uVar31") (+ "+") (number_literal "0x44"))) (, ",") (binary_expression "(*(byte *)(uVar31 + 0x24) & 10) == 0" (parenthesized_expression "(*(byte *)(uVar31 + 0x24) & 10)" (( "(") (binary_expression "*(byte *)(uVar31 + 0x24) & 10" (pointer_expression "*(byte *)(uVar31 + 0x24)" (* "*") (cast_expression "(byte *)(uVar31 + 0x24)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar31 + 0x24)" (( "(") (binary_expression "uVar31 + 0x24" (identifier "uVar31") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "10")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n                      uVar31 = uVar25;\n                      if (uVar11 <= uVar25) goto LAB_000a0d7c;\n                    }" ({ "{") (expression_statement "uVar31 = uVar25;" (assignment_expression "uVar31 = uVar25" (identifier "uVar31") (= "=") (identifier "uVar25")) (; ";")) (if_statement "if (uVar11 <= uVar25) goto LAB_000a0d7c;" (if "if") (parenthesized_expression "(uVar11 <= uVar25)" (( "(") (binary_expression "uVar11 <= uVar25" (identifier "uVar11") (<= "<=") (identifier "uVar25")) () ")")) (goto_statement "goto LAB_000a0d7c;" (goto "goto") (statement_identifier "LAB_000a0d7c") (; ";"))) (} "}"))) (} "}"))) (if_statement "if (piVar17[0x7a] < 1) {\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" (if "if") (parenthesized_expression "(piVar17[0x7a] < 1)" (( "(") (binary_expression "piVar17[0x7a] < 1" (subscript_expression "piVar17[0x7a]" (identifier "piVar17") ([ "[") (number_literal "0x7a") (] "]")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_000a0d70:\n                    if (uVar11 <= uVar25) break;\n                    goto LAB_000a0d2c;\n                  }" ({ "{") (labeled_statement "LAB_000a0d70:\n                    if (uVar11 <= uVar25) break;" (statement_identifier "LAB_000a0d70") (: ":") (if_statement "if (uVar11 <= uVar25) break;" (if "if") (parenthesized_expression "(uVar11 <= uVar25)" (( "(") (binary_expression "uVar11 <= uVar25" (identifier "uVar11") (<= "<=") (identifier "uVar25")) () ")")) (break_statement "break;" (break "break") (; ";")))) (goto_statement "goto LAB_000a0d2c;" (goto "goto") (statement_identifier "LAB_000a0d2c") (; ";")) (} "}"))) (if_statement "if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" (if "if") (parenthesized_expression "(*(int *)(uVar31 + 0x28) != piVar17[0x7b])" (( "(") (binary_expression "*(int *)(uVar31 + 0x28) != piVar17[0x7b]" (pointer_expression "*(int *)(uVar31 + 0x28)" (* "*") (cast_expression "(int *)(uVar31 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar31 + 0x28)" (( "(") (binary_expression "uVar31 + 0x28" (identifier "uVar31") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (subscript_expression "piVar17[0x7b]" (identifier "piVar17") ([ "[") (number_literal "0x7b") (] "]"))) () ")")) (compound_statement "{\n                    uVar26 = 0;\n                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }\n                    goto LAB_000a0d70;\n                  }" ({ "{") (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (while_statement "while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" (while "while") (parenthesized_expression "(uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27)" (( "(") (comma_expression "uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27" (assignment_expression "uVar27 = uVar26 + 1" (identifier "uVar27") (= "=") (binary_expression "uVar26 + 1" (identifier "uVar26") (+ "+") (number_literal "1"))) (, ",") (binary_expression "piVar17[0x7a] != uVar27" (subscript_expression "piVar17[0x7a]" (identifier "piVar17") ([ "[") (number_literal "0x7a") (] "]")) (!= "!=") (identifier "uVar27"))) () ")")) (compound_statement "{\n                      iVar16 = uVar26 + 0x7c;\n                      uVar26 = uVar27;\n                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }\n                    }" ({ "{") (expression_statement "iVar16 = uVar26 + 0x7c;" (assignment_expression "iVar16 = uVar26 + 0x7c" (identifier "iVar16") (= "=") (binary_expression "uVar26 + 0x7c" (identifier "uVar26") (+ "+") (number_literal "0x7c"))) (; ";")) (expression_statement "uVar26 = uVar27;" (assignment_expression "uVar26 = uVar27" (identifier "uVar26") (= "=") (identifier "uVar27")) (; ";")) (if_statement "if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" (if "if") (parenthesized_expression "(*(int *)(uVar31 + 0x28) == piVar17[iVar16])" (( "(") (binary_expression "*(int *)(uVar31 + 0x28) == piVar17[iVar16]" (pointer_expression "*(int *)(uVar31 + 0x28)" (* "*") (cast_expression "(int *)(uVar31 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar31 + 0x28)" (( "(") (binary_expression "uVar31 + 0x28" (identifier "uVar31") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (subscript_expression "piVar17[iVar16]" (identifier "piVar17") ([ "[") (identifier "iVar16") (] "]"))) () ")")) (compound_statement "{\n                        uVar31 = uVar27 >> 5 & 1;\n                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);\n                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);\n                        goto LAB_000a0dc9;\n                      }" ({ "{") (expression_statement "uVar31 = uVar27 >> 5 & 1;" (assignment_expression "uVar31 = uVar27 >> 5 & 1" (identifier "uVar31") (= "=") (binary_expression "uVar27 >> 5 & 1" (binary_expression "uVar27 >> 5" (identifier "uVar27") (>> ">>") (number_literal "5")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar26 = uVar31 << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar26 = uVar31 << ((byte)uVar27 & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "uVar31 << ((byte)uVar27 & 0x1f)" (identifier "uVar31") (<< "<<") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);" (assignment_expression "uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" (identifier "uVar31") (= "=") (binary_expression "(uVar31 ^ 1) << ((byte)uVar27 & 0x1f)" (parenthesized_expression "(uVar31 ^ 1)" (( "(") (binary_expression "uVar31 ^ 1" (identifier "uVar31") (^ "^") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar27 & 0x1f)" (( "(") (binary_expression "(byte)uVar27 & 0x1f" (cast_expression "(byte)uVar27" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar27")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (goto_statement "goto LAB_000a0dc9;" (goto "goto") (statement_identifier "LAB_000a0dc9") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_000a0d70;" (goto "goto") (statement_identifier "LAB_000a0d70") (; ";")) (} "}"))) (expression_statement "uVar31 = 1;" (assignment_expression "uVar31 = 1" (identifier "uVar31") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a0dc9:\n                  uVar43 = uVar43 | uVar31;" (statement_identifier "LAB_000a0dc9") (: ":") (expression_statement "uVar43 = uVar43 | uVar31;" (assignment_expression "uVar43 = uVar43 | uVar31" (identifier "uVar43") (= "=") (binary_expression "uVar43 | uVar31" (identifier "uVar43") (| "|") (identifier "uVar31"))) (; ";"))) (expression_statement "local_d8 = local_d8 | uVar26;" (assignment_expression "local_d8 = local_d8 | uVar26" (identifier "local_d8") (= "=") (binary_expression "local_d8 | uVar26" (identifier "local_d8") (| "|") (identifier "uVar26"))) (; ";")) (} "}"))) (labeled_statement "LAB_000a0d7c:\n                iVar16 = FUN_0005b240(uVar43,local_d8);" (statement_identifier "LAB_000a0d7c") (: ":") (expression_statement "iVar16 = FUN_0005b240(uVar43,local_d8);" (assignment_expression "iVar16 = FUN_0005b240(uVar43,local_d8)" (identifier "iVar16") (= "=") (call_expression "FUN_0005b240(uVar43,local_d8)" (identifier "FUN_0005b240") (argument_list "(uVar43,local_d8)" (( "(") (identifier "uVar43") (, ",") (identifier "local_d8") () ")")))) (; ";"))) (} "}")))) (if_statement "if ((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }\n              else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" (if "if") (parenthesized_expression "((iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))))" (( "(") (binary_expression "(iVar16 == 0) &&\n                 ((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))" (( "(") (parenthesized_expression "(*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0))" (( "(") (binary_expression "*(char *)((int)local_58[1] + 9) == '\0' ||\n                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" (binary_expression "*(char *)((int)local_58[1] + 9) == '\0'" (pointer_expression "*(char *)((int)local_58[1] + 9)" (* "*") (cast_expression "(char *)((int)local_58[1] + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_58[1] + 9)" (( "(") (binary_expression "(int)local_58[1] + 9" (cast_expression "(int)local_58[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]"))) (+ "+") (number_literal "9")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)" (( "(") (comma_expression "iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0" (assignment_expression "iVar16 = FUN_000650b0(uVar43,local_d8)" (identifier "iVar16") (= "=") (call_expression "FUN_000650b0(uVar43,local_d8)" (identifier "FUN_000650b0") (argument_list "(uVar43,local_d8)" (( "(") (identifier "uVar43") (, ",") (identifier "local_d8") () ")")))) (, ",") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (*(char *)(iVar12 + 0x4d) != '\0') break;\n              }" ({ "{") (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" (identifier "uVar9") (= "=") (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "(uVar43 >> 0x10)" (( "(") (binary_expression "uVar43 >> 0x10" (identifier "uVar43") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (*(char *)(iVar12 + 0x4d) != '\0') break;" (if "if") (parenthesized_expression "(*(char *)(iVar12 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar12 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x4d)" (* "*") (cast_expression "(char *)(iVar12 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x4d)" (( "(") (binary_expression "iVar12 + 0x4d" (identifier "iVar12") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (else_clause "else {\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" (else "else") (compound_statement "{\n                uVar9 = (undefined2)(uVar43 >> 0x10);\n                if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }\n                FUN_00052380(0x1c,unaff_EDI + 0x66219);\n              }" ({ "{") (expression_statement "uVar9 = (undefined2)(uVar43 >> 0x10);" (assignment_expression "uVar9 = (undefined2)(uVar43 >> 0x10)" (identifier "uVar9") (= "=") (call_expression "(undefined2)(uVar43 >> 0x10)" (parenthesized_expression "(undefined2)" (( "(") (identifier "undefined2") () ")")) (argument_list "(uVar43 >> 0x10)" (( "(") (binary_expression "uVar43 >> 0x10" (identifier "uVar43") (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (iVar16 != 0x65) {\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" (if "if") (parenthesized_expression "(iVar16 != 0x65)" (( "(") (binary_expression "iVar16 != 0x65" (identifier "iVar16") (!= "!=") (number_literal "0x65")) () ")")) (compound_statement "{\n                  FUN_000310d0();\n                  goto LAB_000a0bd0;\n                }" ({ "{") (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" (identifier "FUN_000310d0") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000a0bd0;" (goto "goto") (statement_identifier "LAB_000a0bd0") (; ";")) (} "}"))) (expression_statement "FUN_00052380(0x1c,unaff_EDI + 0x66219);" (call_expression "FUN_00052380(0x1c,unaff_EDI + 0x66219)" (identifier "FUN_00052380") (argument_list "(0x1c,unaff_EDI + 0x66219)" (( "(") (number_literal "0x1c") (, ",") (binary_expression "unaff_EDI + 0x66219" (identifier "unaff_EDI") (+ "+") (number_literal "0x66219")) () ")"))) (; ";")) (} "}")))) (expression_statement "cVar7 = cVar7 + '\x01';" (assignment_expression "cVar7 = cVar7 + '\x01'" (identifier "cVar7") (= "=") (binary_expression "cVar7 + '\x01'" (identifier "cVar7") (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "uVar13 = uVar13 + 0x44;" (assignment_expression "uVar13 = uVar13 + 0x44" (identifier "uVar13") (= "=") (binary_expression "uVar13 + 0x44" (identifier "uVar13") (+ "+") (number_literal "0x44"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 < uVar11)" (( "(") (binary_expression "uVar13 < uVar11" (identifier "uVar13") (< "<") (identifier "uVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_000310d0();" (call_expression "FUN_000310d0()" (identifier "FUN_000310d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00063ca0();" (call_expression "FUN_00063ca0()" (identifier "FUN_00063ca0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') {\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            if (local_d0[2] == 0) goto LAB_000a0ea8;\n            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));\n            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;\n          }" ({ "{") (if_statement "if (local_d0[2] == 0) goto LAB_000a0ea8;" (if "if") (parenthesized_expression "(local_d0[2] == 0)" (( "(") (binary_expression "local_d0[2] == 0" (subscript_expression "local_d0[2]" (identifier "local_d0") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a0ea8;" (goto "goto") (statement_identifier "LAB_000a0ea8") (; ";"))) (expression_statement "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));" (call_expression "FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]))" (identifier "FUN_00063ca0") (argument_list "(CONCAT22(uVar9,(short)local_d0[0x12]))" (( "(") (call_expression "CONCAT22(uVar9,(short)local_d0[0x12])" (identifier "CONCAT22") (argument_list "(uVar9,(short)local_d0[0x12])" (( "(") (identifier "uVar9") (, ",") (cast_expression "(short)local_d0[0x12]" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (subscript_expression "local_d0[0x12]" (identifier "local_d0") ([ "[") (number_literal "0x12") (] "]"))) () ")"))) () ")"))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x4d)" (* "*") (cast_expression "(char *)(iVar4 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x4d)" (( "(") (binary_expression "iVar4 + 0x4d" (identifier "iVar4") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000a0239;" (goto "goto") (statement_identifier "LAB_000a0239") (; ";"))) (} "}"))) (} "}")))) (} "}"))) (labeled_statement "LAB_000a0bd0:\n      piVar10[0x20] = local_d0[10];" (statement_identifier "LAB_000a0bd0") (: ":") (expression_statement "piVar10[0x20] = local_d0[10];" (assignment_expression "piVar10[0x20] = local_d0[10]" (subscript_expression "piVar10[0x20]" (identifier "piVar10") ([ "[") (number_literal "0x20") (] "]")) (= "=") (subscript_expression "local_d0[10]" (identifier "local_d0") ([ "[") (number_literal "10") (] "]"))) (; ";"))) (expression_statement "FUN_0003a3b0();" (call_expression "FUN_0003a3b0()" (identifier "FUN_0003a3b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" (else "else") (if_statement "if (local_d0 != (int *)0x0) {\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" (if "if") (parenthesized_expression "(local_d0 != (int *)0x0)" (( "(") (binary_expression "local_d0 != (int *)0x0" (identifier "local_d0") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_00026590();\n      local_d0 = (int *)0x0;\n      goto LAB_000a0bf2;\n    }" ({ "{") (expression_statement "FUN_00026590();" (call_expression "FUN_00026590()" (identifier "FUN_00026590") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" (identifier "local_d0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_000a0bf2;" (goto "goto") (statement_identifier "LAB_000a0bf2") (; ";")) (} "}"))))) (} "}"))) (expression_statement "local_d0 = (int *)0x0;" (assignment_expression "local_d0 = (int *)0x0" (identifier "local_d0") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000a0bf2:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (statement_identifier "LAB_000a0bf2") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" ({ "{") (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_d0;" (return "return") (identifier "local_d0") (; ";")) (labeled_statement "LAB_000a14dd:\n  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" (statement_identifier "LAB_000a14dd") (: ":") (expression_statement "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);" (assignment_expression "iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (identifier "iVar16") (= "=") (cast_expression "(int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (* "*") (cast_expression "(short *)(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar38 + 4) + uVar11 * 2)" (( "(") (binary_expression "*(int *)(iVar38 + 4) + uVar11 * 2" (pointer_expression "*(int *)(iVar38 + 4)" (* "*") (cast_expression "(int *)(iVar38 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 4)" (( "(") (binary_expression "iVar38 + 4" (identifier "iVar38") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "uVar11 * 2" (identifier "uVar11") (* "*") (number_literal "2"))) () ")")))))) (; ";"))) (if_statement "if (iVar16 < 0) {\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }\n  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" (if "if") (parenthesized_expression "(iVar16 < 0)" (( "(") (binary_expression "iVar16 < 0" (identifier "iVar16") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    if (iVar16 != -1) goto LAB_000a14f9;\n  }" ({ "{") (if_statement "if (iVar16 != -1) goto LAB_000a14f9;" (if "if") (parenthesized_expression "(iVar16 != -1)" (( "(") (binary_expression "iVar16 != -1" (identifier "iVar16") (!= "!=") (number_literal "-1")) () ")")) (goto_statement "goto LAB_000a14f9;" (goto "goto") (statement_identifier "LAB_000a14f9") (; ";"))) (} "}")) (else_clause "else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" (else "else") (if_statement "if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0')" (( "(") (binary_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0'" (pointer_expression "*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" (* "*") (cast_expression "(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc)" (( "(") (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc" (binary_expression "iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4)" (binary_expression "iVar16 * 0x10" (identifier "iVar16") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(*(int *)(iVar38 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar38 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar38 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(iVar38 + 0xc) + 4" (pointer_expression "*(int *)(iVar38 + 0xc)" (* "*") (cast_expression "(int *)(iVar38 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0xc)" (( "(") (binary_expression "iVar38 + 0xc" (identifier "iVar38") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);\n    goto LAB_000a13d9;\n  }" ({ "{") (labeled_statement "LAB_000a14f9:\n    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (statement_identifier "LAB_000a14f9") (: ":") (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar38 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x32)" (( "(") (binary_expression "iVar38 + 0x32" (identifier "iVar38") (+ "+") (number_literal "0x32")) () ")"))))) (; ";"))) (goto_statement "goto LAB_000a13d9;" (goto "goto") (statement_identifier "LAB_000a13d9") (; ";")) (} "}"))))) (labeled_statement "LAB_000a1320:\n  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (statement_identifier "LAB_000a1320") (: ":") (expression_statement "uVar13 = (uint)*(ushort *)(iVar38 + 0x32);" (assignment_expression "uVar13 = (uint)*(ushort *)(iVar38 + 0x32)" (identifier "uVar13") (= "=") (binary_expression "(uint)*(ushort *)(iVar38 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar38 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x32)" (( "(") (binary_expression "iVar38 + 0x32" (identifier "iVar38") (+ "+") (number_literal "0x32")) () ")"))))) (; ";"))) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;" (if "if") (parenthesized_expression "((int)uVar13 <= (int)uVar11)" (( "(") (binary_expression "(int)uVar13 <= (int)uVar11" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (<= "<=") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (goto_statement "goto LAB_000a13d9;" (goto "goto") (statement_identifier "LAB_000a13d9") (; ";"))) (goto_statement "goto LAB_000a132f;" (goto "goto") (statement_identifier "LAB_000a132f") (; ";")) (labeled_statement "LAB_000a13d9:\n  if (uVar11 == uVar13) goto LAB_000a13e1;" (statement_identifier "LAB_000a13d9") (: ":") (if_statement "if (uVar11 == uVar13) goto LAB_000a13e1;" (if "if") (parenthesized_expression "(uVar11 == uVar13)" (( "(") (binary_expression "uVar11 == uVar13" (identifier "uVar11") (== "==") (identifier "uVar13")) () ")")) (goto_statement "goto LAB_000a13e1;" (goto "goto") (statement_identifier "LAB_000a13e1") (; ";")))) (labeled_statement "LAB_000a12f0:\n  iVar38 = *(int *)(iVar38 + 0x14);" (statement_identifier "LAB_000a12f0") (: ":") (expression_statement "iVar38 = *(int *)(iVar38 + 0x14);" (assignment_expression "iVar38 = *(int *)(iVar38 + 0x14)" (identifier "iVar38") (= "=") (pointer_expression "*(int *)(iVar38 + 0x14)" (* "*") (cast_expression "(int *)(iVar38 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + 0x14)" (( "(") (binary_expression "iVar38 + 0x14" (identifier "iVar38") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (if_statement "if (iVar38 == 0) goto LAB_000a1530;" (if "if") (parenthesized_expression "(iVar38 == 0)" (( "(") (binary_expression "iVar38 == 0" (identifier "iVar38") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a1530;" (goto "goto") (statement_identifier "LAB_000a1530") (; ";"))) (goto_statement "goto LAB_000a12fb;" (goto "goto") (statement_identifier "LAB_000a12fb") (; ";")) (} "}")))

type_1 *
function_1(type_2 *var_4,type_3 *var_46,type_4 *pWhere,type_5 *var_62,
                 type_5 *pResultSet,type_6 wctrlFlags,int iAuxArg)

{
  type_7 *pWVar1;
  type_8 *puVar2;
  type_9 *var_94;
  type_10 *var_56;
  type_11 uVar5;
  short var_75;
  int var_110;
  type_12 *p;
  type_13 *var_60;
  type_14 *pTVar8;
  type_13 *db_00;
  type_12 *p_00;
  type_12 *p1;
  type_15 *var_44;
  type_16 *var_59;
  type_17 *pcVar10;
  type_18 var_54;
  type_11 var_105;
  type_1 *pWVar13;
  type_15 var_70;
  type_6 uVar15;
  type_19 var_3;
  int var_24;
  type_19 var_13;
  type_20 *pToken;
  type_4 *var_27;
  type_7 *pWVar20;
  type_2 *pPVar21;
  type_2 *var_92;
  int var_25;
  type_21 *var_43;
  int var_86;
  type_22 *pOVar26;
  type_19 var_78;
  type_23 *var_63;
  type_24 *var_40;
  type_8 var_41;
  type_24 *var_50;
  type_24 *var_51;
  type_11 uVar33;
  type_4 *pExpr;
  type_19 var_12;
  type_19 var_76;
  type_25 *var_96;
  type_25 *var_98;
  type_5 *var_21;
  type_14 **var_20;
  type_18 var_7;
  type_3 *pSrc;
  int var_23;
  type_19 var_77;
  type_15 var_45;
  int var_19;
  type_26 *var_67;
  type_27 *piVar45;
  char *var_36;
  type_28 *pWVar47;
  type_9 *var_93;
  type_27 *var_82;
  int var_6;
  type_23 *var_38;
  type_3 *pSVar51;
  type_20 *op;
  int var_2;
  bool bVar52;
  type_29 uVar53;
  type_10 var_49;
  type_30 var_48;
  type_4 *var_33;
  type_23 *dequote;
  type_25 in_stack_ffffff24;
  type_25 uVar57;
  type_25 in_stack_ffffff25;
  type_25 uVar58;
  type_31 in_stack_ffffff26;
  type_31 uVar59;
  short var_65;
  type_2 *var_97;
  type_2 *pParse_00;
  type_1 *var_108;
  type_29 local_cc;
  int var_73;
  type_19 var_31;
  type_12 *local_b8;
  type_2 *var_17;
  type_19 var_72;
  type_2 *var_16;
  type_2 *local_88;
  char *local_84;
  type_19 var_80;
  type_4 *var_83;
  type_27 local_70;
  type_32 sWLB;
  type_33 w;
  
  uVar53 = var_1();
  pSrc = (type_3 *)((type_30)uVar53 >> 0x20);
  pParse_00 = (type_2 *)uVar53;
  var_17 = var_4;
  var_110 = *(int *)(var_2 + 0x14);
  p = pParse_00->pVdbe;
  var_60 = pParse_00->var_60;
  var_3 = 0;
  do {
    *(type_34 *)((int)&sWLB.pWInfo + var_3) = 0;
    var_3 = var_3 + 4;
  } while (var_3 < 0x1c);
  if ((var_4 != (type_2 *)0x0) && (var_17 = (type_2 *)0x0, (int)var_4->var_60 < 0x40)) {
    var_17 = var_4;
  }
  sWLB.var_62 = (type_5 *)var_17;
  var_7 = (type_18)pWhere & 0xfeff;
  if ((var_60->dbOptFlags & 0x10) == 0) {
    var_7 = (type_18)pWhere;
  }
  var_16 = (type_2 *)pSrc->nSrc;
  if (0x40 < (int)var_16) {
    var_5(pParse_00,(char *)(var_6 + 0x59c10),0x40);
    var_108 = (type_1 *)0x0;
    goto LAB_000a0bf2;
  }
  var_54 = var_7 & 0x20;
  if ((var_7 & 0x20) == 0) {
    var_3 = (int)((int)&var_16[-1].pRename + 3) * 0x44 + 0x337U & 0xfffffff8;
  }
  else {
    var_3 = 0x330;
    var_16 = (type_2 *)0x1;
  }
  if (var_60->mallocFailed == '\0') {
    dequote = (type_23 *)0x9fc7c;
    var_108 = (type_1 *)
               var_8(var_60,var_9(var_97,
                                             var_10(in_stack_ffffff26,
                                                      var_11(in_stack_ffffff25,in_stack_ffffff24))
                                            ));
    if (var_60->mallocFailed == '\0') {
      var_108->var_46 = pSrc;
      var_108->var_4 = pParse_00;
      var_108->var_62 = (type_5 *)var_17;
      var_108->pResultSet = (type_5 *)var_46;
      var_108->pWhere = pExpr;
      var_108->aiCurOnePass[1] = -1;
      var_108->aiCurOnePass[0] = -1;
      var_108->nLevel = (type_11)var_16;
      var_24 = pParse_00->nLabel + -1;
      pParse_00->nLabel = var_24;
      var_108->iContinue = var_24;
      var_108->iBreak = var_24;
      var_108->wctrlFlags = var_7;
      var_108->iLimit = (type_35)var_62;
      var_108->savedNQueryLoop = pParse_00->nQueryLoop;
      var_108->nOBSat = '\0';
      var_108->sorted = '\0';
      var_108->eOnePass = '\0';
      var_108->untestedTerms = '\0';
      var_12 = (type_19)&var_108->eDistinct & 0xfffffffc;
      *(type_34 *)&var_108->nRowOut = 0;
      var_13 = 0;
      do {
        *(type_34 *)(var_12 + var_13) = 0;
        var_13 = var_13 + 4;
      } while (var_13 < ((int)var_108 + (0x4c - var_12) & 0xfffffffc));
      local_b8 = (type_12 *)var_108->a;
      pWVar47 = (type_28 *)((int)var_108->aiCurOnePass + (var_3 - 0x18));
      pToken = (type_20 *)((int)((int)&var_16->var_60 + 1) * 0x44);
      var_33 = (type_4 *)0x0;
      var_14(local_b8,0,(size_t)pToken);
      pWVar1 = &var_108->sWC;
      pWVar47->aLTerm = pWVar47->aLTermSpace;
      pWVar47->nLTerm = 0;
      pWVar47->nLSlot = 3;
      pWVar47->wsFlags = 0;
      (var_108->sWC).a = (var_108->sWC).aStatic;
      (var_108->sMaskSet).n = 0;
      (var_108->sWC).pWInfo = var_108;
      (var_108->sWC).hasOr = '\0';
      (var_108->sWC).pOuter = (type_7 *)0x0;
      (var_108->sWC).nTerm = 0;
      (var_108->sWC).nSlot = 8;
      sWLB.pWInfo = var_108;
      sWLB.pWC = pWVar1;
      sWLB.pNew = pWVar47;
      var_15(pWVar1,pExpr,',');
      if (var_16 == (type_2 *)0x0) {
        if (var_17 != (type_2 *)0x0) {
          var_108->nOBSat = (type_36)var_17->var_60;
        }
        if ((var_7 & 0x100) != 0) {
          var_108->eDistinct = '\x01';
        }
        pToken = (type_20 *)(var_6 + 0x59c2c);
        var_18(pParse_00,'\0',(char *)pToken);
      }
      else {
        var_31 = 0;
        var_20 = &pSrc->a[0].pTab;
        do {
          var_24 = (int)var_20[6];
          var_19 = (var_108->sMaskSet).n;
          (var_108->sMaskSet).n = var_19 + 1;
          (var_108->sMaskSet).ix[var_19] = var_24;
          if ((((pSrc->a[var_31].fg.field_0x1 & 4) != 0) &&
              (var_21 = ((type_37 *)(var_20 + 0xb))->pFuncArg,
              var_21 != (type_5 *)0x0)) && (0 < var_21->nExpr)) {
            pTVar8 = *var_20;
            var_24 = 0;
            var_38 = (type_23 *)0x0;
            uVar57 = var_22(pTVar8,0);
            uVar58 = (type_25)((type_19)pTVar8 >> 8);
            uVar59 = (type_31)((type_19)pTVar8 >> 0x10);
            do {
              var_19 = var_10(uVar59,var_11(uVar58,uVar57));
              var_23 = (int)*(short *)(var_19 + 0x2a);
              if (var_23 <= var_24) {
LAB_000a0e38:
                pToken = *(type_20 **)var_10(uVar59,var_11(uVar58,uVar57));
                var_33 = (type_4 *)(var_6 + 0x6623d);
                var_5(pParse_00,(char *)(var_6 + 0x6623d));
                dequote = var_38;
                break;
              }
              var_25 = var_24;
              while ((*(type_15 *)(*(int *)(var_19 + 4) + 0xf + var_25 * 0x10) & 2) == 0) {
                var_25 = var_25 + 1;
                if (var_25 == var_23) goto LAB_000a0e38;
              }
              var_27 = var_26((type_13 *)0x0,(int)var_33,pToken,(int)dequote);
              if (var_27 == (type_4 *)0x0) break;
              var_24 = var_25 + 1;
              var_27->iTable = (int)var_20[6];
              var_27->iColumn = var_25;
              (var_27->y).sub.iAddr = var_10(uVar59,var_11(uVar58,uVar57));
              var_27 = var_21->a[(int)var_38].pExpr;
              if (var_27 != (type_4 *)0x0) {
                var_28(pParse_00->var_60,var_27,0,(type_11 **)0x0);
              }
              var_38 = (type_23 *)((int)&var_38->zName + 1);
              var_27 = var_29(pParse_00,0xa2,(type_4 *)0x0,var_33);
              var_27 = var_29(pParse_00,0x35,var_27,var_33);
              var_30(pWVar1,var_27,1);
            } while ((int)var_38 < var_21->nExpr);
          }
          var_31 = var_31 + 1;
          var_20 = var_20 + 0x11;
        } while ((int)var_31 < pSrc->nSrc);
      }
      var_24 = (var_108->sWC).nTerm;
      uVar57 = (type_25)((type_19)var_24 >> 8);
      uVar59 = (type_31)((type_19)var_24 >> 0x10);
      var_24 = var_24 + -1;
      if (-1 < var_24) {
        do {
          var_19 = var_24 + -1;
          dequote = (type_23 *)0x9ff76;
          var_32(pSrc,pWVar1,var_24);
          var_24 = var_19;
        } while (var_19 != -1);
      }
      if (var_60->mallocFailed == '\0') {
        uVar33 = '\0';
        if (0 < (sWLB.pWC)->nTerm) {
          var_24 = 0;
          pWVar20 = sWLB.pWC;
          do {
            var_40 = pWVar20->a + var_24;
            if (((var_40->wtFlags & 2) == 0) &&
               (*(int *)((int)&var_40->prereqAll + 4) == 0 && (int)var_40->prereqAll == 0)) {
              var_33 = var_40->pExpr;
              if (var_16 != (type_2 *)0x0) {
                var_3 = 0;
                do {
                  *(type_34 *)((int)&w.var_4 + var_3) = 0;
                  var_3 = var_3 + 4;
                } while (var_3 < 0x1c);
                w.eCode = '\x01';
                w.xExprCallback = (type_38 *)(var_6 + -0x6e6f7);
                w.xSelectCallback = (type_39 *)(var_6 + -0x82347);
                if (var_33 != (type_4 *)0x0) {
                  dequote = (type_23 *)0xa0018;
                  var_34(&w,var_33);
                  pWVar20 = sWLB.pWC;
                  if (w.eCode == '\0') goto LAB_000a0030;
                }
                var_33 = var_40->pExpr;
              }
              dequote = (type_23 *)0x10;
              pToken = (type_20 *)var_108->iBreak;
              var_35(pParse_00,var_33,(int)pToken,0x10);
              var_40->wtFlags = var_40->wtFlags | 4;
              pWVar20 = sWLB.pWC;
            }
LAB_000a0030:
            var_24 = var_24 + 1;
          } while (var_24 < pWVar20->nTerm);
        }
        if ((var_7 & 0x100) != 0) {
          if (pSrc->nSrc == 1) {
            var_24 = pSrc->a[0].iCursor;
            if (0 < var_46->nSrc) {
              var_20 = (type_14 **)&var_46->nAlloc;
              var_19 = 0;
LAB_000a1290:
              var_36 = (char *)*var_20;
              do {
                if (var_36 == (char *)0x0) {
LAB_000144c2:
                    /* WARNING: Does not return */
                  pcVar10 = (type_17 *)var_37();
                  (*pcVar10)();
                }
                var_3 = *(type_19 *)(var_36 + 4);
                while( true ) {
                  if ((var_3 & 0x1000) == 0) {
                    if (((*var_36 == -0x62) && (var_24 == *(int *)(var_36 + 0x1c))) &&
                       (*(int *)(var_36 + 0x20) < 0)) goto LAB_000a13e1;
                    var_19 = var_19 + 1;
                    var_20 = var_20 + 5;
                    if (var_19 == var_46->nSrc) goto LAB_000a12dd;
                    goto LAB_000a1290;
                  }
                  if ((var_3 & 0x40000) == 0) break;
                  var_36 = *(char **)(*(int *)(var_36 + 0x14) + 4);
                  if (var_36 == (char *)0x0) goto LAB_000144c2;
                  var_3 = *(type_19 *)(var_36 + 4);
                }
                var_36 = *(char **)(var_36 + 0xc);
              } while( true );
            }
LAB_000a12dd:
            var_38 = (pSrc->a[0].pTab)->pIndex;
            if (var_38 != (type_23 *)0x0) {
LAB_000a12fb:
              if (var_38->onError == '\0') goto LAB_000a12f0;
              if (var_38->nKeyCol != 0) {
                var_3 = 0;
LAB_000a132f:
                pToken = (type_20 *)0x2;
                dequote = var_38;
                var_40 = var_39(pWVar1,var_24,var_3,0xffffffffffffffff,2,var_38);
                if (var_40 == (type_24 *)0x0) {
                  var_44 = (type_15 *)var_38->azColl[var_3];
                  if (0 < var_46->nSrc) {
                    var_19 = 0;
                    do {
                      var_33 = *(type_4 **)((int)var_46->a + var_19 * 0x14 + -4);
                      if (var_33 == (type_4 *)0x0) {
sqlite3WhereBegin_cold_936:
                    /* WARNING: Does not return */
                        pcVar10 = (type_17 *)var_37();
                        (*pcVar10)();
                      }
                      var_41 = var_33->flags;
                      var_27 = var_33;
                      while ((var_41 & 0x1000) != 0) {
                        if ((var_41 & 0x40000) == 0) {
                          var_27 = var_27->pLeft;
                        }
                        else {
                          var_27 = ((var_27->x).pList)->a[0].pExpr;
                        }
                        if (var_27 == (type_4 *)0x0) goto sqlite3WhereBegin_cold_936;
                        var_41 = var_27->flags;
                      }
                      if (((var_27->op == 0x9e) &&
                          (var_27->iColumn == (int)var_38->aiColumn[var_3])) &&
                         (var_24 == var_27->iTable)) {
                        dequote = (type_23 *)0xa140e;
                        var_43 = var_42(pParse_00,var_33);
                        if (var_43 == (type_21 *)0x0) {
                          var_43 = pParse_00->var_60->pDfltColl;
                        }
                        var_45 = *var_43->zName;
                        if (*(char *)(var_6 + 0x64d89 + (type_19)var_45) ==
                            *(char *)(var_6 + 0x64d89 + (type_19)*var_44)) {
                          if (var_45 == 0) goto LAB_000a14dd;
                          var_23 = 1;
                          while (var_45 = var_43->zName[var_23],
                                *(char *)(var_6 + 0x64d89 + (type_19)var_45) ==
                                *(char *)(var_6 + 0x64d89 + (type_19)var_44[var_23])) {
                            var_23 = var_23 + 1;
                            if (var_45 == 0) goto LAB_000a14dd;
                          }
                        }
                      }
                      var_19 = var_19 + 1;
                      if (var_46->nSrc <= var_19) {
                        var_13 = (type_19)var_38->nKeyCol;
                        goto LAB_000a13d9;
                      }
                    } while( true );
                  }
                  goto LAB_000a14f9;
                }
                goto LAB_000a1320;
              }
LAB_000a13e1:
              var_108->eDistinct = '\x01';
              goto LAB_000a0050;
            }
          }
LAB_000a1530:
          if (var_17 == (type_2 *)0x0) {
            var_108->wctrlFlags = var_108->wctrlFlags | 0x80;
            var_108->var_62 = (type_5 *)var_46;
          }
        }
LAB_000a0050:
        pWVar47 = sWLB.pNew;
        pWVar13 = sWLB.pWInfo;
        pSVar51 = (sWLB.pWInfo)->var_46;
        if (((var_16 == (type_2 *)0x1) && (((sWLB.pWInfo)->wctrlFlags & 0x20) == 0)) &&
           ((pTVar8 = pSVar51->a[0].pTab, pTVar8->nModuleArg == 0 &&
            ((pSVar51->a[0].fg.field_0x1 & 2) == 0)))) {
          var_24 = pSVar51->a[0].iCursor;
          pWVar1 = &(sWLB.pWInfo)->sWC;
          (sWLB.pNew)->nSkip = 0;
          (sWLB.pNew)->wsFlags = 0;
          dequote = (type_23 *)0x0;
          pToken = (type_20 *)0x82;
          var_40 = var_39(pWVar1,var_24,-1,0,0x82,(type_23 *)0x0);
          if (var_40 == (type_24 *)0x0) {
            var_38 = pTVar8->pIndex;
            if (var_38 == (type_23 *)0x0) {
              var_41 = pWVar47->wsFlags;
            }
            else {
              do {
                if (((var_38->onError != '\0') && (var_38->pPartIdxWhere == (type_4 *)0x0)) &&
                   (var_38->nKeyCol < 4)) {
                  op = (type_20 *)((-(type_19)((var_38->field_0x37 & 8) == 0) & 0xffffff80) + 0x82);
                  if (var_38->nKeyCol == 0) {
                    var_3 = 0;
                  }
                  else {
                    var_13 = 0;
                    do {
                      pToken = op;
                      dequote = var_38;
                      var_40 = var_39(pWVar1,var_24,var_13,0,(type_8)op,var_38);
                      if (var_40 == (type_24 *)0x0) {
                        var_3 = (type_19)var_38->nKeyCol;
                        break;
                      }
                      pWVar47->aLTerm[var_13] = var_40;
                      var_3 = (type_19)var_38->nKeyCol;
                      var_13 = var_13 + 1;
                    } while ((int)var_13 < (int)var_3);
                    if (var_13 != var_3) goto LAB_000a1960;
                  }
                  pWVar47->wsFlags = 0x1201;
                  uVar15 = (type_6)var_3;
                  if (((var_38->field_0x37 & 0x20) == 0) &&
                     ((*(type_19 *)((int)&pSVar51->a[0].colUsed + 4) &
                      *(type_19 *)((int)&var_38->colNotIdxed + 4)) != 0 ||
                      ((type_19)pSVar51->a[0].colUsed & (type_19)var_38->colNotIdxed) != 0)) {
                    pWVar47->nLTerm = uVar15;
                    (pWVar47->u).btree.nEq = uVar15;
                    (pWVar47->u).btree.pIndex = var_38;
                    pWVar47->rRun = 0x27;
                  }
                  else {
                    (pWVar47->u).btree.pIndex = var_38;
                    pWVar47->wsFlags = 0x1241;
                    pWVar47->nLTerm = uVar15;
                    (pWVar47->u).btree.nEq = uVar15;
                    pWVar47->rRun = 0x27;
                  }
                  goto LAB_000a1a26;
                }
LAB_000a1960:
                var_38 = var_38->pNext;
              } while (var_38 != (type_23 *)0x0);
              var_41 = pWVar47->wsFlags;
            }
          }
          else {
            pWVar47->wsFlags = 0x1101;
            *pWVar47->aLTerm = var_40;
            pWVar47->nLTerm = 1;
            (pWVar47->u).btree.nEq = 1;
            pWVar47->rRun = 0x21;
            var_41 = pWVar47->wsFlags;
          }
          if (var_41 == 0) {
            pSVar51 = (sWLB.pWInfo)->var_46;
            goto LAB_000a0070;
          }
LAB_000a1a26:
          pWVar47->nOut = 1;
          pWVar13->a[0].pWLoop = pWVar47;
          *(type_34 *)&pWVar47->maskSelf = 1;
          *(type_34 *)((int)&pWVar47->maskSelf + 4) = 0;
          pWVar13->nRowOut = 1;
          pWVar13->a[0].iTabCur = var_24;
          if (pWVar13->var_62 != (type_5 *)0x0) {
            pWVar13->nOBSat = (type_36)pWVar13->var_62->nExpr;
          }
          if ((pWVar13->wctrlFlags & 0x100) != 0) {
            pWVar13->eDistinct = '\x01';
          }
LAB_000a0239:
          if (var_108->var_62 == (type_5 *)0x0) {
LAB_000a0ea8:
            if ((var_60->flags & 0x1000) != 0) {
              *(type_34 *)&var_108->revMask = 0xffffffff;
              *(type_34 *)((int)&var_108->revMask + 4) = 0xffffffff;
            }
          }
          if ((pParse_00->nErr == 0) && (var_60->mallocFailed == '\0')) {
            if ((var_108->nLevel < 2) || (var_46 == (type_3 *)0x0)) {
              local_cc = 0xffffffffffffffff;
            }
            else {
              local_cc = 0xffffffffffffffff;
              if ((var_60->dbOptFlags & 0x100) == 0) {
                dequote = (type_23 *)0xa1746;
                var_48 = var_47(&var_108->sMaskSet,(type_5 *)var_46);
                if (sWLB.var_62 != (type_5 *)0x0) {
                  dequote = (type_23 *)0xa1764;
                  var_49 = var_47(&var_108->sMaskSet,sWLB.var_62);
                  var_48 = var_48 | var_49;
                }
                var_17 = (type_2 *)(var_48 >> 0x20);
                var_31 = (type_19)var_48;
                local_cc = 0xffffffffffffffff;
                var_24 = var_108->nLevel - 1;
                uVar57 = (type_25)var_24;
                uVar58 = (type_25)((type_19)var_24 >> 8);
                uVar59 = (type_31)((type_19)var_24 >> 0x10);
                if (0 < var_24) {
                  do {
                    var_24 = var_10(uVar59,var_11(uVar58,uVar57));
                    pWVar47 = var_108->a[var_24].pWLoop;
                    if (((var_108->var_46->a[pWVar47->iTab].fg.jointype & 8) != 0) &&
                       (((var_7 & 0x100) != 0 || ((pWVar47->wsFlags & 0x1000) != 0)))) {
                      var_3 = (type_19)pWVar47->maskSelf;
                      var_13 = *(type_19 *)((int)&pWVar47->maskSelf + 4);
                      if (((type_19)var_17 & var_13) == 0 && (var_31 & var_3) == 0) {
                        var_40 = (sWLB.pWC)->a;
                        var_50 = var_40 + (sWLB.pWC)->nTerm;
                        var_51 = var_40;
                        if (var_40 < var_50) {
                          do {
                            if (((*(type_19 *)((int)&var_51->prereqAll + 4) & var_13) != 0 ||
                                 ((type_19)var_51->prereqAll & var_3) != 0) &&
                               (((var_51->pExpr->flags & 1) == 0 ||
                                ((int)var_51->pExpr->iRightJoinTable !=
                                 var_108->var_46->a[pWVar47->iTab].iCursor)))) {
                              if (var_51 < var_50) goto LAB_000a17a8;
                              break;
                            }
                            var_51 = var_51 + 1;
                          } while (var_51 < var_50);
                          local_cc = var_9(~var_13 & (type_19)local_cc._4_4_,
                                              ~var_3 & (type_19)(type_1 *)local_cc);
                          while( true ) {
                            if ((var_13 & *(type_19 *)((int)&var_40->prereqAll + 4)) != 0 ||
                                (var_3 & (type_19)var_40->prereqAll) != 0) {
                              var_40->wtFlags = var_40->wtFlags | 4;
                            }
                            var_40 = var_40 + 1;
                            if (var_50 <= var_40) break;
                            var_3 = (type_19)pWVar47->maskSelf;
                            var_13 = *(type_19 *)((int)&pWVar47->maskSelf + 4);
                          }
                        }
                        else {
                          local_cc = var_9(~var_13 & (type_19)local_cc._4_4_,
                                              ~var_3 & (type_19)(type_1 *)local_cc);
                        }
                        var_19 = var_10(uVar59,var_11(uVar58,uVar57));
                        var_45 = var_108->nLevel;
                        if (var_45 - 1 != var_19) {
                          var_52((type_26 *)((int)local_b8 + var_24 * 0x44),
                                  var_108[1].aiCurOnePass + var_24 * 0x11 + -6,
                                  ((var_45 - 1) - var_19) * 0x44);
                          var_45 = var_108->nLevel;
                        }
                        var_16 = (type_2 *)((int)&var_16[-1].pRename + 3);
                        var_108->nLevel = var_45 - 1;
                      }
                    }
LAB_000a17a8:
                    var_24 = var_10(uVar59,var_11(uVar58,uVar57)) + -1;
                    uVar57 = (type_25)var_24;
                    uVar58 = (type_25)((type_19)var_24 >> 8);
                    uVar59 = (type_31)((type_19)var_24 >> 0x10);
                  } while (var_24 != 0);
                }
              }
            }
            puVar2 = &var_108->var_4->nQueryLoop;
            *puVar2 = *puVar2 + (int)var_108->nRowOut;
            var_45 = 0;
            if ((var_7 & 4) != 0) {
              pWVar47 = var_108->a[0].pWLoop;
              var_3 = pWVar47->wsFlags;
              if ((var_3 & 0x1000) == 0) {
                if ((((var_7 & 8) == 0) || ((pSrc->a[0].pTab)->nModuleArg != 0)) ||
                   (((var_3 & 0x2000) != 0 && ((var_7 & 0x10) == 0)))) goto LAB_000a02e0;
                uVar33 = '\x02';
              }
              else {
                uVar33 = '\x01';
              }
              var_108->eOnePass = uVar33;
              if ((((pSrc->a[0].pTab)->tabFlags & 0x20) == 0) && ((var_3 & 0x40) != 0)) {
                var_45 = 0;
                if ((var_7 & 8) != 0) {
                  var_45 = 8;
                }
                pWVar47->wsFlags = var_3 & 0xffffffbf;
              }
            }
LAB_000a02e0:
            if ((int)var_16 < 1) {
              var_108->iTop = p->nOp;
              if (var_60->mallocFailed == '\0') goto LAB_000a0bf2;
            }
            else {
              var_67 = (type_26 *)local_b8;
              do {
                var_70 = var_67->iFrom;
                pTVar8 = pSrc->a[var_70].pTab;
                if (pTVar8->pSchema == (type_40 *)0x0) {
                  uVar57 = 0xc0;
                  uVar58 = 0xbd;
                  var_65 = -0x10;
                }
                else {
                  dequote = (type_23 *)0xa032f;
                  var_24 = var_53(var_60,pTVar8->pSchema);
                  uVar57 = (type_25)var_24;
                  uVar58 = (type_25)((type_19)var_24 >> 8);
                  var_65 = (short)((type_19)var_24 >> 0x10);
                }
                pWVar47 = var_67->pWLoop;
                var_3 = pWVar47->wsFlags;
                if (((pTVar8->tabFlags & 2) == 0) && (pTVar8->pSelect == (type_41 *)0x0)) {
                  if ((var_3 & 0x400) == 0) {
                    if (pTVar8->nModuleArg == 0) {
                      if (((var_3 & 0x40) == 0) && (var_54 == 0)) {
                        var_19 = 0x6d;
                        var_24 = pSrc->a[var_70].iCursor;
                        if (var_108->eOnePass != '\0') {
                          var_108->aiCurOnePass[0] = var_24;
                          var_19 = 0x6e;
                          var_24 = pSrc->a[var_70].iCursor;
                        }
                        var_55(pParse_00,var_24,var_10(var_65,var_11(uVar58,uVar57)),
                                         pTVar8,var_19);
                        if (((var_108->eOnePass == '\0') && (pTVar8->nCol < 0x40)) &&
                           ((pTVar8->tabFlags & 0x20) == 0)) {
                          var_56 = &pSrc->a[var_70].colUsed;
                          var_3 = (type_19)*var_56;
                          var_13 = *(type_19 *)((int)var_56 + 4);
                          var_36 = (char *)0x0;
                          if (var_13 != 0 || var_3 != 0) {
                            var_36 = (char *)0x0;
                            do {
                              var_3 = var_3 >> 1 | var_13 << 0x1f;
                              var_13 = var_13 >> 1;
                              var_36 = var_36 + 1;
                            } while (var_13 != 0 || var_3 != 0);
                          }
                          var_57(p,-1,var_36,-3);
                        }
                        if (0 < p->nOp) {
                          p->aOp[p->nOp + -1].p5 = (type_18)var_45;
                        }
                        var_3 = pWVar47->wsFlags;
                      }
                      else {
                        var_58(pParse_00,var_10(var_65,var_11(uVar58,uVar57)),
                                         pTVar8->tnum,'\0',pTVar8->zName);
                        var_3 = pWVar47->wsFlags;
                      }
                    }
                  }
                  else {
                    for (var_59 = pTVar8->pVTable; (var_59 != (type_16 *)0x0 && (var_60 != var_59->var_60));
                        var_59 = var_59->pNext) {
                    }
                    var_24 = var_61(p,0xa3,pSrc->a[var_70].iCursor,0,0);
                    var_57(p,var_24,(char *)var_59,-0xc);
                    var_3 = pWVar47->wsFlags;
                  }
                }
                if ((var_3 & 0x200) != 0) {
                  var_38 = (pWVar47->u).btree.pIndex;
                  if ((((pTVar8->tabFlags & 0x20) == 0) || ((var_38->field_0x37 & 3) != 2)) ||
                     (var_54 == 0)) {
                    var_21 = var_62;
                    if (var_108->eOnePass == '\0') {
                      if ((var_54 == 0) || (var_62 == (type_5 *)0x0)) {
                        var_24 = 0x6d;
                        var_21 = (type_5 *)pParse_00->nTab;
                        pParse_00->nTab = (int)((int)&var_21->nExpr + 1);
                        var_67->iIdxCur = (int)var_21;
                      }
                      else {
                        var_24 = 0x6c;
                        var_67->iIdxCur = (int)var_62;
                      }
                    }
                    else {
                      var_63 = (pSrc->a[var_70].pTab)->pIndex;
                      if ((var_38 != var_63) && (var_63 != (type_23 *)0x0)) {
                        do {
                          var_63 = var_63->pNext;
                          var_21 = (type_5 *)((int)&var_21->nExpr + 1);
                          if (var_63 == (type_23 *)0x0) break;
                        } while (var_38 != var_63);
                      }
                      var_24 = 0x6e;
                      var_108->aiCurOnePass[1] = (int)var_21;
                      var_67->iIdxCur = (int)var_21;
                    }
                    var_61(p,var_24,(int)var_21,var_38->tnum,
                                      var_10(var_65,var_11(uVar58,uVar57)));
                    var_64(pParse_00,var_38);
                    if (((((pWVar47->wsFlags & 0xf) != 0) && ((pWVar47->wsFlags & 0x8002) == 0)) &&
                        ((var_108->wctrlFlags & 1) == 0)) &&
                       ((var_108->eDistinct != '\x02' && (0 < p->nOp)))) {
                      p->aOp[p->nOp + -1].p5 = 2;
                    }
                  }
                  else {
                    var_67->iIdxCur = var_67->iTabCur;
                  }
                }
                if (-1 < var_65) {
                  dequote = (type_23 *)0xa0402;
                  var_66(pParse_00,var_10(var_65,var_11(uVar58,uVar57)));
                }
                var_67 = var_67 + 1;
              } while (var_67 != var_108->a + (int)var_16);
              var_108->iTop = p->nOp;
              if (var_60->mallocFailed == '\0') {
                local_88 = (type_2 *)0x0;
                do {
                  if ((*(type_15 *)(*(int *)((int)&local_b8->iCurrentTime + 4) + 0x25) & 0x40) != 0) {
                    var_45 = (type_15)local_b8->pc;
                    p_00 = pParse_00->pVdbe;
                    var_38 = (type_23 *)0x0;
                    var_24 = var_61(p_00,0x11,0,0,0);
                    pTVar8 = pSrc->a[var_45].pTab;
                    var_40 = (var_108->sWC).a;
                    pWVar47 = *(type_28 **)((int)&local_b8->iCurrentTime + 4);
                    var_51 = var_40 + (var_108->sWC).nTerm;
                    var_73 = 0;
                    if (var_40 < var_51) {
                      bVar52 = false;
                      var_13 = 0;
                      var_72 = 0;
                      var_83 = (type_4 *)0x0;
                      do {
                        while( true ) {
                          if ((*(int *)((int)&pWVar47->prereq + 4) == 0 && (int)pWVar47->prereq == 0
                              ) && ((var_40->wtFlags & 2) == 0)) {
                            var_33 = var_40->pExpr;
                            uVar57 = var_22(var_33,0);
                            uVar58 = (type_25)((type_19)var_33 >> 8);
                            var_65 = (short)((type_19)var_33 >> 0x10);
                            if ((var_33->flags & 1) == 0) {
                              w.eCode = '\x03';
                              w.xExprCallback =
                                   (type_38 *)(var_6 + -0x70cb7);
                              w.u = (type_42)pSrc->a[var_45].iCursor;
                              w.xSelectCallback =
                                   (type_39 *)(var_6 + -0x82347);
                              dequote = (type_23 *)0xa0f43;
                              var_34(&w,var_33);
                              if (w.eCode != '\0') {
                                var_33 = var_28(pParse_00->var_60,
                                                  (type_4 *)var_10(var_65,var_11(uVar58,uVar57)),0
                                                  ,(type_11 **)0x0);
                                var_83 = var_68(pParse_00->var_60,var_83,var_33);
                              }
                            }
                          }
                          var_38 = local_cc._4_4_;
                          var_19 = var_69(var_40,pSrc->a + var_45,local_cc);
                          if (var_19 != 0) break;
LAB_000a05b6:
                          var_40 = var_40 + 1;
                          if (var_51 <= var_40) goto LAB_000a0663;
                        }
                        var_3 = (var_40->u).leftColumn;
                        uVar57 = 0;
                        uVar58 = 0;
                        var_65 = 0;
                        var_97 = (type_2 *)0x80000000;
                        if ((int)var_3 < 0x40) {
                          var_70 = (type_15)var_3 & 0x1f;
                          pPVar21 = (type_2 *)(1 << ((type_15)var_3 & 0x1f));
                          var_92 = pPVar21;
                          var_97 = (type_2 *)(0 << var_70 | 1U >> 0x20 - var_70);
                          if ((var_3 & 0x20) != 0) {
                            var_92 = (type_2 *)0x0;
                            var_97 = pPVar21;
                          }
                          uVar57 = var_22(var_92,0);
                          uVar58 = (type_25)((type_19)var_92 >> 8);
                          var_65 = (short)((type_19)var_92 >> 0x10);
                        }
                        if (!bVar52) {
                          dequote = (type_23 *)pTVar8->aCol[var_3].zName;
                          var_38 = (type_23 *)(var_6 + 0x59c3e);
                          var_71(0x11c,(char *)var_38,pTVar8->zName);
                        }
                        if ((var_72 & (type_19)var_97) == 0 &&
                            (var_10(var_65,var_11(uVar58,uVar57)) & var_13) == 0) {
                          var_19 = var_73 + 1;
                          if ((int)(type_19)pWVar47->nLSlot < var_19) {
                            dequote = (type_23 *)0xa058e;
                            var_23 = var_74(pParse_00->var_60,pWVar47,var_19);
                            if (var_23 != 0) goto LAB_000a0ba5;
                          }
                          bVar52 = true;
                          pWVar47->aLTerm[var_73] = var_40;
                          var_72 = var_72 | (type_19)var_97;
                          var_13 = var_13 | var_10(var_65,var_11(uVar58,uVar57));
                          var_73 = var_19;
                          goto LAB_000a05b6;
                        }
                        bVar52 = true;
                        var_40 = var_40 + 1;
                      } while (var_40 < var_51);
LAB_000a0663:
                      var_13 = ~var_13;
                      var_3 = ~var_72 | 0x80000000;
                    }
                    else {
                      var_13 = 0xffffffff;
                      var_3 = 0xffffffff;
                      var_73._0_2_ = 0;
                      var_83 = (type_4 *)0x0;
                    }
                    pWVar47->nLTerm = (type_6)var_73;
                    (pWVar47->u).btree.nEq = (type_6)var_73;
                    pWVar47->wsFlags = 0x4241;
                    var_12 = *(type_19 *)((int)&pSrc->a[var_45].colUsed + 4);
                    var_13 = var_13 & (type_19)pSrc->a[var_45].colUsed;
                    var_3 = var_3 & var_12;
                    var_75 = pTVar8->nCol;
                    var_78 = 0x3f;
                    if (var_75 < 0x40) {
                      var_78 = (int)var_75;
                    }
                    if (0 < var_75) {
                      uVar57 = (type_25)var_12;
                      uVar58 = (type_25)(var_12 >> 8);
                      var_65 = (short)(var_12 >> 0x10);
                      var_76 = 0;
                      do {
                        var_70 = (type_15)var_76 & 0x1f;
                        var_77 = var_13 >> var_70 | var_3 << 0x20 - var_70;
                        if ((var_76 & 0x20) != 0) {
                          var_77 = var_3 >> ((type_15)var_76 & 0x1f);
                        }
                        var_73 = (var_73 + 1) - (type_19)((var_77 & 1) == 0);
                        var_76 = var_76 + 1;
                      } while (var_78 != var_76);
                    }
                    if ((int)var_12 < 0) {
                      var_73 = var_73 + -0x3f + (int)var_75;
                    }
                    var_38 = var_79
                                        (pParse_00->var_60,(type_6)var_73 + 1,(int)&w,&var_38->zName);
                    if (var_38 != (type_23 *)0x0) {
                      var_19 = 0;
                      uVar57 = 0;
                      uVar58 = 0;
                      uVar59 = 0;
                      (pWVar47->u).btree.pIndex = var_38;
                      var_38->zName = (char *)(var_6 + 0x59c58);
                      var_38->pTable = pTVar8;
                      var_40 = (var_108->sWC).a;
                      if (var_40 < var_51) {
                        var_80 = 0;
                        do {
                          while( true ) {
                            var_23 = var_19 * 2;
                            var_25 = var_69(var_40,pSrc->a + var_45,local_cc);
                            if (var_25 != 0) break;
LAB_000a07a0:
                            var_40 = var_40 + 1;
                            if (var_51 <= var_40) goto LAB_000a0858;
                          }
                          var_76 = (var_40->u).leftColumn;
                          var_12 = 0;
                          var_77 = 0x80000000;
                          if ((int)var_76 < 0x40) {
                            bVar52 = (var_76 & 0x20) == 0;
                            var_77 = (type_19)!bVar52 << ((type_15)var_76 & 0x1f);
                            var_12 = (type_19)bVar52 << ((type_15)var_76 & 0x1f);
                          }
                          if ((var_80 & var_77) != 0 ||
                              (var_10(uVar59,var_11(uVar58,uVar57)) & var_12) != 0)
                          goto LAB_000a07a0;
                          var_12 = var_10(uVar59,var_11(uVar58,uVar57)) | var_12;
                          uVar57 = (type_25)var_12;
                          uVar58 = (type_25)(var_12 >> 8);
                          uVar59 = (type_31)(var_12 >> 0x10);
                          local_70 = (type_27)var_76;
                          var_33 = var_40->pExpr;
                          var_80 = var_80 | var_77;
                          var_38->aiColumn[var_19] = local_70;
                          dequote = (type_23 *)0xa082b;
                          var_43 = var_81
                                              (pParse_00,var_33->pLeft,var_33->pRight);
                          var_36 = &UNK_00064bb9 + var_6;
                          if (var_43 != (type_21 *)0x0) {
                            var_36 = var_43->zName;
                          }
                          var_23 = var_23 + 2;
                          var_40 = var_40 + 1;
                          var_38->azColl[var_19] = var_36;
                          var_19 = var_19 + 1;
                        } while (var_40 < var_51);
LAB_000a0858:
                        var_25 = var_19 * 4;
                        uVar57 = (type_25)var_25;
                        uVar58 = (type_25)((type_19)var_25 >> 8);
                        uVar59 = (type_31)((type_19)var_25 >> 0x10);
                        var_92 = pParse_00;
                      }
                      else {
                        var_23 = 0;
                        var_92 = pParse_00;
                      }
                      local_84 = &UNK_00064bb9 + var_6;
                      var_82 = var_38->aiColumn;
                      if (var_75 < 1) {
                        piVar45 = (type_27 *)((int)var_82 + var_23);
                      }
                      else {
                        var_12 = 0;
                        var_23 = var_19;
                        do {
                          var_25 = var_23 * 4;
                          uVar57 = (type_25)var_25;
                          uVar58 = (type_25)((type_19)var_25 >> 8);
                          uVar59 = (type_31)((type_19)var_25 >> 0x10);
                          piVar45 = var_82 + var_23;
                          var_70 = (type_15)var_12 & 0x1f;
                          var_76 = var_13 >> var_70 | var_3 << 0x20 - var_70;
                          if ((var_12 & 0x20) != 0) {
                            var_76 = var_3 >> ((type_15)var_12 & 0x1f);
                          }
                          var_19 = var_23;
                          if ((var_76 & 1) != 0) {
                            *piVar45 = (type_27)var_12;
                            var_25 = var_25 + 4;
                            uVar57 = (type_25)var_25;
                            uVar58 = (type_25)((type_19)var_25 >> 8);
                            uVar59 = (type_31)((type_19)var_25 >> 0x10);
                            var_38->azColl[var_23] = local_84;
                            var_82 = var_38->aiColumn;
                            var_19 = var_23 + 1;
                            piVar45 = var_82 + var_23 + 1;
                          }
                          var_12 = var_12 + 1;
                          var_23 = var_19;
                        } while (var_78 != var_12);
                      }
                      if ((*(int *)((int)&pSrc->a[var_45].colUsed + 4) < 0) && (0x3f < pTVar8->nCol)
                         ) {
                        var_23 = 0x3f;
                        while( true ) {
                          var_82[var_19] = (type_27)var_23;
                          var_23 = var_23 + 1;
                          var_38->azColl[var_19] = local_84;
                          var_19 = var_19 + 1;
                          if (pTVar8->nCol <= var_23) break;
                          var_82 = var_38->aiColumn;
                        }
                        var_23 = var_19 * 4;
                        uVar57 = (type_25)var_23;
                        uVar58 = (type_25)((type_19)var_23 >> 8);
                        uVar59 = (type_31)((type_19)var_23 >> 0x10);
                        piVar45 = var_38->aiColumn + var_19;
                      }
                      *piVar45 = -1;
                      *(char **)((int)var_38->azColl + var_10(uVar59,var_11(uVar58,uVar57))) =
                           local_84;
                      p1 = (type_12 *)var_92->nTab;
                      var_92->nTab = (int)((int)&p1->var_60 + 1);
                      local_b8->pNext = p1;
                      pParse_00 = var_92;
                      var_61(p_00,0x70,(int)p1,var_73 + 1,0);
                      var_64(var_92,var_38);
                      var_45 = (type_15)local_b8->pc;
                      pSVar51 = ((var_108->sWC).pWInfo)->var_46;
                      if ((pSVar51->a[var_45].fg.field_0x1 & 0x10) == 0) {
                        var_23 = var_61(p_00,0x24,(int)local_b8->pPrev,0,0);
                        var_17 = (type_2 *)0x0;
                      }
                      else {
                        var_23 = pSVar51->a[var_45].regReturn;
                        var_17 = (type_2 *)var_61(p_00,0x46,0,0,0);
                        var_61(p_00,0xd,var_23,0,pSVar51->a[var_45].addrFillSub);
                        var_23 = var_61(p_00,0xe,var_23,0,0);
                      }
                      var_25 = 0;
                      if (var_83 != (type_4 *)0x0) {
                        var_25 = pParse_00->nLabel + -1;
                        pParse_00->nLabel = var_25;
                        dequote = (type_23 *)0x10;
                        var_35(pParse_00,var_83,var_25,0x10);
                        pWVar47->wsFlags = pWVar47->wsFlags | 0x20000;
                      }
                      if (pParse_00->nTempReg == '\0') {
                        var_86 = pParse_00->nMem + 1;
                        uVar57 = (type_25)var_86;
                        uVar58 = (type_25)((type_19)var_86 >> 8);
                        var_65 = (short)((type_19)var_86 >> 0x10);
                        pParse_00->nMem = var_86;
                      }
                      else {
                        var_70 = pParse_00->nTempReg - 1;
                        pParse_00->nTempReg = var_70;
                        var_86 = pParse_00->aTempReg[var_70];
                        uVar57 = (type_25)var_86;
                        uVar58 = (type_25)((type_19)var_86 >> 8);
                        var_65 = (short)((type_19)var_86 >> 0x10);
                      }
                      var_86 = var_84
                                         (pParse_00,var_38,(int)local_b8->pPrev,
                                          var_10(var_65,var_11(uVar58,uVar57)),0,(int *)0x0,
                                          (type_23 *)0x0,0);
                      var_61(p_00,0x84,(int)local_b8->pNext,
                                        var_10(var_65,var_11(uVar58,uVar57)),0);
                      if (0 < p_00->nOp) {
                        p_00->aOp[p_00->nOp + -1].p5 = 0x10;
                      }
                      if (var_83 != (type_4 *)0x0) {
                        dequote = (type_23 *)0xa0a80;
                        var_85(p_00,var_25);
                      }
                      if ((pSVar51->a[var_45].fg.field_0x1 & 0x10) == 0) {
                        var_61(p_00,5,(int)local_b8->pPrev,var_23 + 1,0);
                      }
                      else {
                        if ((int)var_17 < 0) {
                          var_17 = (type_2 *)(p_00->nOp + -1);
                        }
                        pOVar26 = (type_22 *)(&UNK_000ac9e5 + var_6);
                        if (p_00->var_60->mallocFailed == '\0') {
                          pOVar26 = p_00->aOp + (int)var_17;
                        }
                        pOVar26->p2 = var_86 + var_19;
                        var_87
                                  ((type_2 *)local_b8->pPrev,pSVar51->a[var_45].regResult,1,
                                   (int)dequote,var_10(var_65,var_11(uVar58,uVar57)),
                                   var_97);
                        var_61(p_00,0xb,0,var_23,0);
                        var_96 = &pSVar51->a[var_45].fg.field_0x1;
                        *var_96 = *var_96 & 0xef;
                      }
                      var_19 = p_00->nOp;
                      if (0 < var_19) {
                        p_00->aOp[var_19 + -1].p5 = 3;
                        var_19 = p_00->nOp;
                      }
                      if (var_23 < 0) {
                        var_23 = var_19 + -1;
                      }
                      pOVar26 = (type_22 *)(&UNK_000ac9e5 + var_6);
                      if (p_00->var_60->mallocFailed == '\0') {
                        pOVar26 = p_00->aOp + var_23;
                      }
                      pOVar26->p2 = var_19;
                      var_19 = var_10(var_65,var_11(uVar58,uVar57));
                      if (var_19 != 0) {
                        var_88(pParse_00,var_19);
                      }
                      var_19 = p_00->nOp + -1;
                      if (-1 < var_24) {
                        var_19 = var_24;
                      }
                      pOVar26 = (type_22 *)(&UNK_000ac9e5 + var_6);
                      if (p_00->var_60->mallocFailed == '\0') {
                        pOVar26 = p_00->aOp + var_19;
                      }
                      pOVar26->p2 = p_00->nOp;
                    }
LAB_000a0ba5:
                    if (var_83 != (type_4 *)0x0) {
                      var_89(pParse_00->var_60,var_83);
                    }
                    if (var_60->mallocFailed != '\0') goto LAB_000a0bd0;
                  }
                  var_92 = pParse_00->pToplevel;
                  if (pParse_00->pToplevel == (type_2 *)0x0) {
                    var_92 = pParse_00;
                  }
                  if (var_92->explain == '\x02') {
                    var_90(pParse_00,pSrc,(type_26 *)local_b8,var_7);
                  }
                  local_b8->cacheCtr = p->nOp;
                  var_92 = (type_2 *)((int)&local_88->var_60 + 1);
                  var_49 = var_91
                                     (local_88,local_b8,(type_1 *)local_cc,(int)local_cc._4_4_,
                                      (type_26 *)var_10(var_65,var_11(uVar58,uVar57)),
                                      var_9(pParse_00,var_97));
                  var_108->iContinue = local_b8->nMem;
                  dequote = local_cc._4_4_;
                  local_cc = var_49;
                  local_b8 = (type_12 *)&local_b8->nStmtDefCons;
                  local_88 = var_92;
                } while (var_16 != var_92);
                goto LAB_000a0bf2;
              }
            }
          }
        }
        else {
LAB_000a0070:
          pWVar47 = sWLB.pNew;
          pWVar13 = sWLB.pWInfo;
          var_94 = pSVar51->a + (sWLB.pWInfo)->nLevel;
          var_93 = pSVar51->a;
          db_00 = (sWLB.pWInfo)->var_4->var_60;
          (sWLB.pNew)->wsFlags = 0;
          sWLB.iPlanLimit = 20000;
          (sWLB.pNew)->aLTerm = (sWLB.pNew)->aLTermSpace;
          (sWLB.pNew)->nLTerm = 0;
          (sWLB.pNew)->nLSlot = 3;
          if (var_93 < var_94) {
            var_105 = '\0';
            do {
              pWVar47->iTab = var_105;
              var_3 = (pWVar13->sMaskSet).n;
              sWLB.iPlanLimit = sWLB.iPlanLimit + 1000;
              if ((int)var_3 < 1) {
                var_3 = 0;
                var_13 = 0;
              }
              else if (var_93->iCursor == (pWVar13->sMaskSet).ix[0]) {
                var_3 = 1;
                var_13 = 0;
              }
              else {
                var_13 = 0;
                do {
                  var_12 = var_13 + 1;
                  if (var_12 == var_3) {
                    var_3 = 0;
                    var_13 = 0;
                    goto LAB_000a014b;
                  }
                  var_24 = var_13 + 1;
                  var_13 = var_12;
                } while (var_93->iCursor != (pWVar13->sMaskSet).ix[var_24]);
                var_45 = (type_15)var_12 & 0x1f;
                var_78 = 1 << ((type_15)var_12 & 0x1f);
                var_3 = var_78;
                var_13 = 0 << var_45 | 1U >> 0x20 - var_45;
                if ((var_12 & 0x20) != 0) {
                  var_3 = 0;
                  var_13 = var_78;
                }
              }
LAB_000a014b:
              *(type_19 *)&pWVar47->maskSelf = var_3;
              *(type_19 *)((int)&pWVar47->maskSelf + 4) = var_13;
              uVar5 = (var_93->fg).jointype;
              if (var_93->pTab->nModuleArg == 0) {
                dequote = (type_23 *)0xa019d;
                var_24 = var_95(&sWLB,var_9(var_97,
                                                          var_10(uVar59,var_11(uVar57,uVar33))))
                ;
                uVar58 = 0;
                uVar57 = 0;
                uVar59 = 0;
                var_97 = (type_2 *)0x0;
              }
              else {
                var_96 = (type_25 *)(var_93 + 1);
                uVar58 = 0;
                uVar57 = 0;
                uVar59 = 0;
                var_97 = (type_2 *)0x0;
                while (var_96 < var_94) {
LAB_000a0d2c:
                  var_98 = var_96;
                  var_96 = var_96 + 0x44;
                  if (var_97 == (type_2 *)0x0 &&
                      var_10(uVar59,var_11(uVar57,uVar58)) == 0) {
                    while (var_96 = var_98 + 0x44, (var_98[0x24] & 10) == 0) {
                      var_98 = var_96;
                      if (var_94 <= var_96) goto LAB_000a0d7c;
                    }
                  }
                  var_3 = (pWVar13->sMaskSet).n;
                  if ((int)var_3 < 1) {
LAB_000a0d70:
                    if (var_94 <= var_96) break;
                    goto LAB_000a0d2c;
                  }
                  if (*(int *)(var_98 + 0x28) != (pWVar13->sMaskSet).ix[0]) {
                    var_13 = 0;
                    while (var_12 = var_13 + 1, var_3 != var_12) {
                      var_24 = var_13 + 1;
                      var_13 = var_12;
                      if (*(int *)(var_98 + 0x28) == (pWVar13->sMaskSet).ix[var_24]) {
                        var_3 = var_12 >> 5 & 1;
                        var_13 = var_3 << ((type_15)var_12 & 0x1f);
                        var_3 = (var_3 ^ 1) << ((type_15)var_12 & 0x1f);
                        goto LAB_000a0dc9;
                      }
                    }
                    goto LAB_000a0d70;
                  }
                  var_3 = 1;
                  var_13 = 0;
LAB_000a0dc9:
                  var_3 = var_10(uVar59,var_11(uVar57,uVar58)) | var_3;
                  var_97 = (type_2 *)((type_19)var_97 | var_13);
                  uVar58 = (type_25)var_3;
                  uVar57 = (type_25)(var_3 >> 8);
                  uVar59 = (type_31)(var_3 >> 0x10);
                }
LAB_000a0d7c:
                var_24 = var_99((type_32 *)
                                             var_10(uVar59,var_11(uVar57,uVar58)),
                                             var_9(pToken,var_97),
                                             var_100(uVar59,var_101(uVar57,var_102(uVar58,dequote
                                                                                     ))));
              }
              if ((var_24 == 0) &&
                 (((sWLB.pWC)->hasOr == '\0' ||
                  (var_24 = var_103(&sWLB,var_9(var_97,
                                                          var_10(uVar59,var_11(uVar57,uVar58))),
                                           var_9(dequote,pToken)), var_24 == 0)))) {
                if (db_00->mallocFailed != '\0') break;
              }
              else {
                if (var_24 != 0x65) {
                  var_104(db_00,pWVar47);
                  goto LAB_000a0bd0;
                }
                var_71(0x1c,(char *)(var_6 + 0x66219));
              }
              var_105 = var_105 + '\x01';
              var_93 = var_93 + 1;
              uVar33 = uVar5;
            } while (var_93 < var_94);
          }
          var_104(db_00,pWVar47);
          dequote = (type_23 *)0xa01fb;
          var_106(var_108,0);
          if (var_60->mallocFailed == '\0') {
            if (var_108->var_62 == (type_5 *)0x0) goto LAB_000a0ea8;
            dequote = (type_23 *)0xa022b;
            var_106(var_108,var_108->nRowOut + 1);
            if (var_60->mallocFailed == '\0') goto LAB_000a0239;
          }
        }
      }
LAB_000a0bd0:
      pParse_00->nQueryLoop = var_108->savedNQueryLoop;
      var_107(var_60,var_108);
    }
    else if (var_108 != (type_1 *)0x0) {
      var_109(var_60,var_108);
      var_108 = (type_1 *)0x0;
      goto LAB_000a0bf2;
    }
  }
  var_108 = (type_1 *)0x0;
LAB_000a0bf2:
  if (var_110 != *(int *)(var_2 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_111();
  }
  return var_108;
LAB_000a14dd:
  var_19 = (int)var_38->aiColumn[var_3];
  if (var_19 < 0) {
    if (var_19 != -1) goto LAB_000a14f9;
  }
  else if (var_38->pTable->aCol[var_19].notNull == '\0') {
LAB_000a14f9:
    var_13 = (type_19)var_38->nKeyCol;
    goto LAB_000a13d9;
  }
LAB_000a1320:
  var_13 = (type_19)var_38->nKeyCol;
  var_3 = var_3 + 1;
  if ((int)var_13 <= (int)var_3) goto LAB_000a13d9;
  goto LAB_000a132f;
LAB_000a13d9:
  if (var_3 == var_13) goto LAB_000a13e1;
LAB_000a12f0:
  var_38 = var_38->pNext;
  if (var_38 == (type_23 *)0x0) goto LAB_000a1530;
  goto LAB_000a12fb;
}


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

int * MASKED(int *param_1,int *param_2,ushort param_3,int param_4)

{
  byte *pbVar1;
  short sVar2;
  int iVar3;
  int iVar4;
  code *pcVar5;
  ushort uVar6;
  char cVar7;
  byte bVar8;
  undefined2 uVar9;
  int *piVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  int iVar14;
  undefined4 uVar15;
  int iVar16;
  int *piVar17;
  uint uVar18;
  undefined4 *puVar19;
  undefined *puVar20;
  char *pcVar21;
  undefined4 *puVar22;
  int *piVar23;
  undefined1 uVar24;
  int extraout_ECX;
  uint uVar25;
  uint uVar26;
  uint uVar27;
  int iVar28;
  ushort uVar29;
  int *piVar30;
  uint uVar31;
  int *piVar32;
  uint uVar33;
  int *piVar34;
  int *piVar35;
  undefined2 *puVar36;
  int iVar37;
  int unaff_EDI;
  int iVar38;
  int in_GS_OFFSET;
  bool bVar39;
  undefined8 uVar40;
  ulonglong uVar41;
  ulonglong uVar42;
  uint uVar43;
  uint local_d8;
  int *local_d0;
  uint local_cc;
  uint local_c8;
  int local_c0;
  uint local_bc;
  int *local_b8;
  int *local_b4;
  uint local_a8;
  int local_a0;
  int local_88;
  undefined *local_84;
  uint local_78;
  int local_74;
  undefined2 local_70;
  int *local_58 [3];
  int local_4c;
  int local_40;
  int local_3c [5];
  char local_28;
  int local_24;
  int local_20;
  
  uVar40 = FUN_0001af1a();
  piVar30 = (int *)((ulonglong)uVar40 >> 0x20);
  piVar10 = (int *)uVar40;
  local_b4 = param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = piVar10[2];
  iVar4 = *piVar10;
  uVar11 = 0;
  do {
    *(undefined4 *)((int)local_58 + uVar11) = 0;
    uVar11 = uVar11 + 4;
  } while (uVar11 < 0x1c);
  if ((param_1 != (int *)0x0) && (local_b4 = (int *)0x0, *param_1 < 0x40)) {
    local_b4 = param_1;
  }
  local_58[2] = local_b4;
  uVar29 = param_3 & 0xfeff;
  if ((*(byte *)(iVar4 + 0x48) & 0x10) == 0) {
    uVar29 = param_3;
  }
  local_a0 = *piVar30;
  if (0x40 < local_a0) {
    FUN_000590d0(piVar10,unaff_EDI + 0x59c10,0x40);
    local_d0 = (int *)0x0;
    goto LAB_000a0bf2;
  }
  uVar6 = uVar29 & 0x20;
  if ((uVar29 & 0x20) == 0) {
    uVar11 = (local_a0 + -1) * 0x44 + 0x337U & 0xfffffff8;
  }
  else {
    uVar11 = 0x330;
    local_a0 = 1;
  }
  if (*(char *)(iVar4 + 0x4d) == '\0') {
    local_d0 = (int *)FUN_000283a0();
    if (*(char *)(iVar4 + 0x4d) == '\0') {
      *(undefined8 *)local_d0 = uVar40;
      local_d0[2] = (int)local_b4;
      local_d0[3] = (int)param_2;
      local_d0[4] = extraout_ECX;
      local_d0[7] = -1;
      local_d0[6] = -1;
      *(undefined1 *)((int)local_d0 + 0x2e) = (undefined1)local_a0;
      iVar12 = piVar10[0xe] + -1;
      piVar10[0xe] = iVar12;
      local_d0[8] = iVar12;
      local_d0[9] = iVar12;
      *(ushort *)(local_d0 + 0xb) = uVar29;
      *(undefined2 *)(local_d0 + 5) = (undefined2)param_4;
      local_d0[10] = piVar10[0x20];
      *(undefined4 *)((int)local_d0 + 0x2f) = 0;
      uVar25 = (int)local_d0 + 0x33U & 0xfffffffc;
      local_d0[0x12] = 0;
      uVar13 = 0;
      do {
        *(undefined4 *)(uVar25 + uVar13) = 0;
        uVar13 = uVar13 + 4;
      } while (uVar13 < ((int)local_d0 + (0x4c - uVar25) & 0xfffffffc));
      local_b8 = local_d0 + 0xbb;
      iVar12 = uVar11 + (int)local_d0;
      memset(local_b8,0,(local_a0 + 1) * 0x44);
      local_58[1] = local_d0 + 0x13;
      *(int *)(iVar12 + 0x30) = iVar12 + 0x38;
      *(undefined2 *)(iVar12 + 0x28) = 0;
      *(undefined2 *)(iVar12 + 0x2c) = 3;
      *(undefined4 *)(iVar12 + 0x24) = 0;
      local_d0[0x18] = (int)(local_d0 + 0x19);
      local_d0[0x7a] = 0;
      local_d0[0x13] = (int)local_d0;
      *(undefined1 *)((int)local_d0 + 0x55) = 0;
      local_d0[0x14] = 0;
      local_d0[0x16] = 0;
      local_d0[0x17] = 8;
      local_58[0] = local_d0;
      local_4c = iVar12;
      FUN_0003ab70();
      if (local_a0 == 0) {
        if (local_b4 != (int *)0x0) {
          *(char *)((int)local_d0 + 0x2f) = (char)*local_b4;
        }
        if ((uVar29 & 0x100) != 0) {
          *(undefined1 *)((int)local_d0 + 0x33) = 1;
        }
        FUN_00065d00(piVar10,0,unaff_EDI + 0x59c2c);
      }
      else {
        local_bc = 0;
        piVar17 = piVar30 + 6;
        do {
          iVar12 = piVar17[6];
          iVar38 = local_d0[0x7a];
          local_d0[0x7a] = iVar38 + 1;
          local_d0[iVar38 + 0x7b] = iVar12;
          if ((((*(byte *)((int)piVar30 + local_bc * 0x44 + 0x2d) & 4) != 0) &&
              (piVar34 = (int *)piVar17[0xb], piVar34 != (int *)0x0)) && (0 < *piVar34)) {
            puVar22 = (undefined4 *)*piVar17;
            iVar12 = 0;
            iVar38 = 0;
            do {
              if (*(short *)((int)puVar22 + 0x2a) <= iVar12) {
LAB_000a0e38:
                FUN_000590d0(piVar10,unaff_EDI + 0x6623d,*puVar22,iVar38);
                break;
              }
              iVar16 = iVar12;
              while ((*(byte *)(puVar22[1] + 0xf + iVar16 * 0x10) & 2) == 0) {
                iVar16 = iVar16 + 1;
                if (iVar16 == *(short *)((int)puVar22 + 0x2a)) goto LAB_000a0e38;
              }
              iVar14 = FUN_00028ce0(0);
              if (iVar14 == 0) break;
              iVar12 = iVar16 + 1;
              *(int *)(iVar14 + 0x1c) = piVar17[6];
              *(int *)(iVar14 + 0x20) = iVar16;
              *(undefined4 **)(iVar14 + 0x30) = puVar22;
              if (piVar34[iVar38 * 5 + 1] != 0) {
                FUN_0003dcd0(0);
              }
              iVar38 = iVar38 + 1;
              uVar15 = FUN_00059ec0(0);
              FUN_00059ec0(uVar15);
              FUN_0003a8b0();
            } while (iVar38 < *piVar34);
          }
          local_bc = local_bc + 1;
          piVar17 = piVar17 + 0x11;
        } while ((int)local_bc < *piVar30);
      }
      iVar12 = local_d0[0x16];
      iVar38 = iVar12 + -1;
      if (-1 < iVar38) {
        do {
          iVar38 = iVar38 + -1;
          FUN_0009a5f0(iVar12);
        } while (iVar38 != -1);
      }
      uVar15 = CONCAT31((int3)((uint)iVar12 >> 8),*(char *)(iVar4 + 0x4d));
      if (*(char *)(iVar4 + 0x4d) == '\0') {
        if (0 < local_58[1][3]) {
          iVar12 = 0;
          piVar17 = local_58[1];
          do {
            piVar34 = (int *)(iVar12 * 0x30 + piVar17[5]);
            if (((*(byte *)((int)piVar34 + 10) & 2) == 0) && (piVar34[0xb] == 0 && piVar34[10] == 0)
               ) {
              iVar38 = *piVar34;
              if (local_a0 != 0) {
                uVar11 = 0;
                do {
                  *(undefined4 *)((int)local_3c + uVar11) = 0;
                  uVar11 = uVar11 + 4;
                } while (uVar11 < 0x1c);
                local_28 = '\x01';
                local_3c[1] = unaff_EDI + -0x6e6f7;
                local_3c[2] = unaff_EDI + -0x82347;
                if ((iVar38 != 0) && (FUN_0002e610(), piVar17 = local_58[1], local_28 == '\0'))
                goto LAB_000a0030;
                iVar38 = *piVar34;
              }
              FUN_000958f0(piVar10,iVar38,local_d0[9],0x10);
              *(ushort *)((int)piVar34 + 10) = *(ushort *)((int)piVar34 + 10) | 4;
              piVar17 = local_58[1];
            }
LAB_000a0030:
            iVar12 = iVar12 + 1;
          } while (iVar12 < piVar17[3]);
        }
        if ((uVar29 & 0x100) != 0) {
          if (*piVar30 == 1) {
            iVar12 = piVar30[0xc];
            if (0 < *param_2) {
              piVar17 = param_2 + 1;
              iVar38 = 0;
LAB_000a1290:
              pcVar21 = (char *)*piVar17;
              do {
                if (pcVar21 == (char *)0x0) {
LAB_000144c2:
                    /* WARNING: Does not return */
                  pcVar5 = (code *)invalidInstructionException();
                  (*pcVar5)();
                }
                uVar11 = *(uint *)(pcVar21 + 4);
                while( true ) {
                  if ((uVar11 & 0x1000) == 0) {
                    if (((*pcVar21 == -0x62) && (iVar12 == *(int *)(pcVar21 + 0x1c))) &&
                       (*(int *)(pcVar21 + 0x20) < 0)) goto LAB_000a13e1;
                    iVar38 = iVar38 + 1;
                    piVar17 = piVar17 + 5;
                    if (iVar38 == *param_2) goto LAB_000a12dd;
                    goto LAB_000a1290;
                  }
                  if ((uVar11 & 0x40000) == 0) break;
                  pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);
                  if (pcVar21 == (char *)0x0) goto LAB_000144c2;
                  uVar11 = *(uint *)(pcVar21 + 4);
                }
                pcVar21 = *(char **)(pcVar21 + 0xc);
              } while( true );
            }
LAB_000a12dd:
            iVar38 = *(int *)(piVar30[6] + 8);
            if (iVar38 != 0) {
LAB_000a12fb:
              if (*(char *)(iVar38 + 0x36) == '\0') goto LAB_000a12f0;
              if (*(short *)(iVar38 + 0x32) != 0) {
                uVar11 = 0;
LAB_000a132f:
                iVar16 = FUN_000624e0(0xffffffff,0xffffffff,2,iVar38);
                if (iVar16 == 0) {
                  pbVar1 = *(byte **)(*(int *)(iVar38 + 0x20) + uVar11 * 4);
                  if (0 < *param_2) {
                    iVar16 = 0;
                    do {
                      pcVar21 = (char *)param_2[iVar16 * 5 + 1];
                      if (pcVar21 == (char *)0x0) {
FUN_000144b9:
                    /* WARNING: Does not return */
                        pcVar5 = (code *)invalidInstructionException();
                        (*pcVar5)();
                      }
                      uVar13 = *(uint *)(pcVar21 + 4);
                      while ((uVar13 & 0x1000) != 0) {
                        if ((uVar13 & 0x40000) == 0) {
                          pcVar21 = *(char **)(pcVar21 + 0xc);
                        }
                        else {
                          pcVar21 = *(char **)(*(int *)(pcVar21 + 0x14) + 4);
                        }
                        if (pcVar21 == (char *)0x0) goto FUN_000144b9;
                        uVar13 = *(uint *)(pcVar21 + 4);
                      }
                      if (((*pcVar21 == -0x62) &&
                          (*(int *)(pcVar21 + 0x20) ==
                           (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2))) &&
                         (iVar12 == *(int *)(pcVar21 + 0x1c))) {
                        puVar22 = (undefined4 *)FUN_0005da30();
                        if (puVar22 == (undefined4 *)0x0) {
                          puVar22 = *(undefined4 **)(*piVar10 + 8);
                        }
                        bVar8 = *(byte *)*puVar22;
                        if (*(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==
                            *(char *)(unaff_EDI + 0x64d89 + (uint)*pbVar1)) {
                          if (bVar8 == 0) goto LAB_000a14dd;
                          iVar14 = 1;
                          while (bVar8 = ((byte *)*puVar22)[iVar14],
                                *(char *)(unaff_EDI + 0x64d89 + (uint)bVar8) ==
                                *(char *)(unaff_EDI + 0x64d89 + (uint)pbVar1[iVar14])) {
                            iVar14 = iVar14 + 1;
                            if (bVar8 == 0) goto LAB_000a14dd;
                          }
                        }
                      }
                      iVar16 = iVar16 + 1;
                      if (*param_2 <= iVar16) {
                        uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
                        goto LAB_000a13d9;
                      }
                    } while( true );
                  }
                  goto LAB_000a14f9;
                }
                goto LAB_000a1320;
              }
LAB_000a13e1:
              *(undefined1 *)((int)local_d0 + 0x33) = 1;
              goto LAB_000a0050;
            }
          }
LAB_000a1530:
          if (local_b4 == (int *)0x0) {
            *(ushort *)(local_d0 + 0xb) = *(ushort *)(local_d0 + 0xb) | 0x80;
            local_d0[2] = (int)param_2;
          }
        }
LAB_000a0050:
        iVar38 = local_4c;
        piVar17 = local_58[0];
        uVar9 = (undefined2)((uint)uVar15 >> 0x10);
        iVar12 = local_58[0][1];
        if (((local_a0 == 1) && ((*(byte *)(local_58[0] + 0xb) & 0x20) == 0)) &&
           ((iVar16 = *(int *)(iVar12 + 0x18), *(int *)(iVar16 + 0x38) == 0 &&
            ((*(byte *)(iVar12 + 0x2d) & 2) == 0)))) {
          iVar14 = *(int *)(iVar12 + 0x30);
          *(undefined2 *)(local_4c + 0x2a) = 0;
          *(undefined4 *)(local_4c + 0x24) = 0;
          iVar28 = FUN_000624e0(0,0,0x82,0);
          uVar9 = (undefined2)((uint)uVar15 >> 0x10);
          if (iVar28 == 0) {
            iVar16 = *(int *)(iVar16 + 8);
            if (iVar16 == 0) {
              iVar12 = *(int *)(iVar38 + 0x24);
            }
            else {
              do {
                if (((*(char *)(iVar16 + 0x36) != '\0') && (*(int *)(iVar16 + 0x24) == 0)) &&
                   (*(ushort *)(iVar16 + 0x32) < 4)) {
                  bVar8 = *(byte *)(iVar16 + 0x37);
                  if (*(ushort *)(iVar16 + 0x32) == 0) {
                    uVar11 = 0;
                  }
                  else {
                    uVar13 = 0;
                    do {
                      iVar28 = FUN_000624e0(0,0,(-(uint)((bVar8 & 8) == 0) & 0xffffff80) + 0x82,
                                            iVar16);
                      if (iVar28 == 0) {
                        uVar11 = (uint)*(ushort *)(iVar16 + 0x32);
                        break;
                      }
                      *(int *)(*(int *)(iVar38 + 0x30) + uVar13 * 4) = iVar28;
                      uVar11 = (uint)*(ushort *)(iVar16 + 0x32);
                      uVar13 = uVar13 + 1;
                    } while ((int)uVar13 < (int)uVar11);
                    if (uVar13 != uVar11) goto LAB_000a1960;
                  }
                  *(undefined4 *)(iVar38 + 0x24) = 0x1201;
                  uVar9 = (undefined2)uVar11;
                  if (((*(byte *)(iVar16 + 0x37) & 0x20) == 0) &&
                     ((*(uint *)(iVar12 + 0x40) & *(uint *)(iVar16 + 0x40)) != 0 ||
                      (*(uint *)(iVar12 + 0x3c) & *(uint *)(iVar16 + 0x3c)) != 0)) {
                    *(undefined2 *)(iVar38 + 0x28) = uVar9;
                    *(undefined2 *)(iVar38 + 0x18) = uVar9;
                    *(int *)(iVar38 + 0x20) = iVar16;
                    *(undefined2 *)(iVar38 + 0x14) = 0x27;
                  }
                  else {
                    *(int *)(iVar38 + 0x20) = iVar16;
                    *(undefined4 *)(iVar38 + 0x24) = 0x1241;
                    *(undefined2 *)(iVar38 + 0x28) = uVar9;
                    *(undefined2 *)(iVar38 + 0x18) = uVar9;
                    *(undefined2 *)(iVar38 + 0x14) = 0x27;
                  }
                  goto LAB_000a1a26;
                }
LAB_000a1960:
                uVar9 = (undefined2)((uint)uVar15 >> 0x10);
                iVar16 = *(int *)(iVar16 + 0x14);
              } while (iVar16 != 0);
              iVar12 = *(int *)(iVar38 + 0x24);
            }
          }
          else {
            *(undefined4 *)(iVar38 + 0x24) = 0x1101;
            **(int **)(iVar38 + 0x30) = iVar28;
            *(undefined2 *)(iVar38 + 0x28) = 1;
            *(undefined2 *)(iVar38 + 0x18) = 1;
            *(undefined2 *)(iVar38 + 0x14) = 0x21;
            iVar12 = *(int *)(iVar38 + 0x24);
          }
          if (iVar12 == 0) {
            iVar12 = local_58[0][1];
            goto LAB_000a0070;
          }
LAB_000a1a26:
          *(undefined2 *)(iVar38 + 0x16) = 1;
          piVar17[0xc9] = iVar38;
          *(undefined4 *)(iVar38 + 8) = 1;
          *(undefined4 *)(iVar38 + 0xc) = 0;
          *(undefined2 *)(piVar17 + 0x12) = 1;
          piVar17[0xbc] = iVar14;
          if ((undefined4 *)piVar17[2] != (undefined4 *)0x0) {
            *(char *)((int)piVar17 + 0x2f) = (char)*(undefined4 *)piVar17[2];
          }
          if ((*(byte *)((int)piVar17 + 0x2d) & 1) != 0) {
            *(undefined1 *)((int)piVar17 + 0x33) = 1;
          }
LAB_000a0239:
          if (local_d0[2] == 0) {
LAB_000a0ea8:
            if ((*(byte *)(iVar4 + 0x1d) & 0x10) != 0) {
              local_d0[0x10] = -1;
              local_d0[0x11] = -1;
            }
          }
          if ((piVar10[9] == 0) && (*(char *)(iVar4 + 0x4d) == '\0')) {
            if ((*(byte *)((int)local_d0 + 0x2e) < 2) || (param_2 == (int *)0x0)) {
              local_cc = 0xffffffff;
              local_c8 = 0xffffffff;
            }
            else {
              local_cc = 0xffffffff;
              local_c8 = 0xffffffff;
              if ((*(byte *)(iVar4 + 0x49) & 1) == 0) {
                uVar41 = FUN_0003db30();
                if (local_58[2] != (int *)0x0) {
                  uVar42 = FUN_0003db30();
                  uVar41 = uVar42 | uVar41;
                }
                local_b4 = (int *)(uVar41 >> 0x20);
                local_bc = (uint)uVar41;
                local_cc = 0xffffffff;
                local_c8 = 0xffffffff;
                iVar12 = *(byte *)((int)local_d0 + 0x2e) - 1;
                if (0 < iVar12) {
                  do {
                    iVar38 = local_d0[iVar12 * 0x11 + 0xc9];
                    if (((*(byte *)(local_d0[1] + 0x2c + (uint)*(byte *)(iVar38 + 0x10) * 0x44) & 8)
                         != 0) &&
                       (((uVar29 & 0x100) != 0 || ((*(byte *)(iVar38 + 0x25) & 0x10) != 0)))) {
                      uVar11 = *(uint *)(iVar38 + 8);
                      uVar13 = *(uint *)(iVar38 + 0xc);
                      if (((uint)local_b4 & uVar13) == 0 && (local_bc & uVar11) == 0) {
                        piVar17 = (int *)local_58[1][5];
                        piVar34 = piVar17 + local_58[1][3] * 0xc;
                        if (piVar17 < piVar34) {
                          piVar23 = piVar17;
                          do {
                            uVar25 = uVar11;
                            uVar43 = uVar13;
                            if (((piVar23[0xb] & uVar13) != 0 || (piVar23[10] & uVar11) != 0) &&
                               (((*(byte *)(*piVar23 + 4) & 1) == 0 ||
                                ((int)*(short *)(*piVar23 + 0x26) !=
                                 *(int *)(local_d0[1] + (uint)*(byte *)(iVar38 + 0x10) * 0x44 + 0x30
                                         ))))) {
                              if (piVar23 < piVar34) goto LAB_000a17a8;
                              break;
                            }
                            piVar23 = piVar23 + 0xc;
                          } while (piVar23 < piVar34);
                          while( true ) {
                            if ((uVar43 & piVar17[0xb]) != 0 || (uVar25 & piVar17[10]) != 0) {
                              *(ushort *)((int)piVar17 + 10U) = *(ushort *)((int)piVar17 + 10U) | 4;
                            }
                            piVar17 = piVar17 + 0xc;
                            if (piVar34 <= piVar17) break;
                            uVar25 = *(uint *)(iVar38 + 8);
                            uVar43 = *(uint *)(iVar38 + 0xc);
                          }
                        }
                        local_c8 = ~uVar13 & local_c8;
                        local_cc = ~uVar11 & local_cc;
                        bVar8 = *(byte *)((int)local_d0 + 0x2e);
                        if (bVar8 - 1 != iVar12) {
                          memmove(local_b8 + iVar12 * 0x11,local_d0 + iVar12 * 0x11 + 0xcc,
                                  ((bVar8 - 1) - iVar12) * 0x44);
                          bVar8 = *(byte *)((int)local_d0 + 0x2e);
                        }
                        local_a0 = local_a0 + -1;
                        *(byte *)((int)local_d0 + 0x2e) = bVar8 - 1;
                      }
                    }
LAB_000a17a8:
                    iVar12 = iVar12 + -1;
                  } while (iVar12 != 0);
                }
              }
            }
            uVar40 = CONCAT44(local_c8,local_cc);
            *(int *)(*local_d0 + 0x80) = *(int *)(*local_d0 + 0x80) + (int)(short)local_d0[0x12];
            bVar8 = 0;
            if ((uVar29 & 4) != 0) {
              uVar11 = *(uint *)(local_d0[0xc9] + 0x24);
              if ((uVar11 & 0x1000) == 0) {
                if ((((uVar29 & 8) == 0) || (*(int *)(piVar30[6] + 0x38) != 0)) ||
                   (((uVar11 & 0x2000) != 0 && ((uVar29 & 0x10) == 0)))) goto LAB_000a02e0;
                uVar24 = 2;
              }
              else {
                uVar24 = 1;
              }
              *(undefined1 *)((int)local_d0 + 0x31) = uVar24;
              if (((*(byte *)(piVar30[6] + 0x24) & 0x20) == 0) && ((uVar11 & 0x40) != 0)) {
                bVar8 = 0;
                if ((uVar29 & 8) != 0) {
                  bVar8 = 8;
                }
                *(uint *)(local_d0[0xc9] + 0x24) = uVar11 & 0xffffffbf;
              }
            }
LAB_000a02e0:
            if (local_a0 < 1) {
              local_d0[0xe] = *(int *)(iVar3 + 0x68);
              if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0bf2;
            }
            else {
              piVar17 = local_b8;
              do {
                uVar11 = (uint)*(byte *)(piVar17 + 9);
                puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];
                if (puVar22[0x12] == 0) {
                  iVar12 = -1000000;
                }
                else {
                  iVar12 = FUN_000304d0();
                }
                iVar38 = piVar17[0xe];
                uVar13 = *(uint *)(iVar38 + 0x24);
                if (((*(byte *)(puVar22 + 9) & 2) == 0) && (puVar22[3] == 0)) {
                  if ((uVar13 & 0x400) == 0) {
                    if (puVar22[0xe] == 0) {
                      if (((uVar13 & 0x40) == 0) && (uVar6 == 0)) {
                        uVar15 = 0x6d;
                        if (*(char *)((int)local_d0 + 0x31) != '\0') {
                          local_d0[6] = piVar30[uVar11 * 0x11 + 0xc];
                          uVar15 = 0x6e;
                        }
                        FUN_0005c7e0(puVar22,uVar15);
                        if (((*(char *)((int)local_d0 + 0x31) == '\0') &&
                            (*(short *)((int)puVar22 + 0x2a) < 0x40)) &&
                           ((*(byte *)(puVar22 + 9) & 0x20) == 0)) {
                          uVar13 = piVar30[uVar11 * 0x11 + 0xf];
                          uVar25 = (piVar30 + uVar11 * 0x11 + 0xf)[1];
                          if (uVar25 != 0 || uVar13 != 0) {
                            do {
                              uVar13 = uVar13 >> 1 | uVar25 << 0x1f;
                              uVar25 = uVar25 >> 1;
                            } while (uVar25 != 0 || uVar13 != 0);
                          }
                          FUN_000370b0(0xfffffffd);
                        }
                        if (0 < *(int *)(iVar3 + 0x68)) {
                          *(ushort *)(*(int *)(iVar3 + 0x68) * 0x14 + *(int *)(iVar3 + 100) + -0x12)
                               = (ushort)bVar8;
                        }
                        uVar13 = *(uint *)(iVar38 + 0x24);
                      }
                      else {
                        FUN_00049420(0,*puVar22);
                        uVar13 = *(uint *)(iVar38 + 0x24);
                      }
                    }
                  }
                  else {
                    for (piVar34 = (int *)puVar22[0x10];
                        (piVar34 != (int *)0x0 && (iVar4 != *piVar34)); piVar34 = (int *)piVar34[6])
                    {
                    }
                    FUN_000497a0(0,0);
                    FUN_000370b0(0xfffffff4);
                    uVar13 = *(uint *)(iVar38 + 0x24);
                  }
                }
                if ((uVar13 & 0x200) != 0) {
                  iVar16 = *(int *)(iVar38 + 0x20);
                  if ((((*(byte *)(puVar22 + 9) & 0x20) == 0) ||
                      ((*(byte *)(iVar16 + 0x37) & 3) != 2)) || (uVar6 == 0)) {
                    if (*(char *)((int)local_d0 + 0x31) == '\0') {
                      if ((uVar6 == 0) || (param_4 == 0)) {
                        iVar14 = piVar10[10];
                        piVar10[10] = iVar14 + 1;
                        piVar17[2] = iVar14;
                      }
                      else {
                        piVar17[2] = param_4;
                      }
                    }
                    else {
                      iVar14 = *(int *)(piVar30[uVar11 * 0x11 + 6] + 8);
                      iVar28 = param_4;
                      if ((iVar16 != iVar14) && (iVar14 != 0)) {
                        do {
                          iVar14 = *(int *)(iVar14 + 0x14);
                          iVar28 = iVar28 + 1;
                          if (iVar14 == 0) break;
                        } while (iVar16 != iVar14);
                      }
                      local_d0[7] = iVar28;
                      piVar17[2] = iVar28;
                    }
                    FUN_000497a0(*(undefined4 *)(iVar16 + 0x2c),iVar12);
                    FUN_0005c7b0();
                    if (((((*(uint *)(iVar38 + 0x24) & 0xf) != 0) &&
                         ((*(uint *)(iVar38 + 0x24) & 0x8002) == 0)) &&
                        ((*(byte *)(local_d0 + 0xb) & 1) == 0)) &&
                       ((*(char *)((int)local_d0 + 0x33) != '\x02' && (0 < *(int *)(iVar3 + 0x68))))
                       ) {
                      *(undefined2 *)(*(int *)(iVar3 + 100) + *(int *)(iVar3 + 0x68) * 0x14 + -0x12)
                           = 2;
                    }
                  }
                  else {
                    piVar17[2] = piVar17[1];
                  }
                }
                if (-1 < iVar12) {
                  FUN_000893e0();
                }
                piVar17 = piVar17 + 0x11;
              } while (piVar17 != local_d0 + local_a0 * 0x11 + 0xbb);
              local_d0[0xe] = *(int *)(iVar3 + 0x68);
              if (*(char *)(iVar4 + 0x4d) == '\0') {
                local_88 = 0;
                do {
                  if ((*(byte *)(local_b8[0xe] + 0x25) & 0x40) != 0) {
                    uVar11 = (uint)*(byte *)(local_b8 + 9);
                    piVar17 = (int *)piVar10[2];
                    iVar12 = FUN_000497a0(0,0);
                    puVar22 = (undefined4 *)piVar30[uVar11 * 0x11 + 6];
                    piVar34 = (int *)local_d0[0x18];
                    piVar23 = (int *)local_b8[0xe];
                    piVar32 = piVar34 + local_d0[0x16] * 0xc;
                    local_c0 = 0;
                    if (piVar34 < piVar32) {
                      bVar39 = false;
                      uVar25 = 0;
                      local_a8 = 0;
                      local_74 = 0;
                      do {
                        while( true ) {
                          if (((piVar23[1] == 0 && *piVar23 == 0) &&
                              ((*(byte *)((int)piVar34 + 10) & 2) == 0)) &&
                             ((*(byte *)(*piVar34 + 4) & 1) == 0)) {
                            local_28 = '\x03';
                            local_3c[1] = unaff_EDI + -0x70cb7;
                            local_24 = piVar30[uVar11 * 0x11 + 0xc];
                            local_3c[2] = unaff_EDI + -0x82347;
                            FUN_0002e610(*piVar34);
                            if (local_28 != '\0') {
                              FUN_0003dcd0(0);
                              local_74 = FUN_0003a550();
                            }
                          }
                          iVar38 = FUN_00030fa0(uVar40);
                          if (iVar38 != 0) break;
LAB_000a05b6:
                          piVar34 = piVar34 + 0xc;
                          if (piVar32 <= piVar34) goto LAB_000a0663;
                        }
                        uVar13 = piVar34[7];
                        local_d8 = 0x80000000;
                        uVar43 = 0;
                        if ((int)uVar13 < 0x40) {
                          bVar8 = (byte)uVar13 & 0x1f;
                          uVar31 = 1 << ((byte)uVar13 & 0x1f);
                          uVar43 = uVar31;
                          local_d8 = 0 << bVar8 | 1U >> 0x20 - bVar8;
                          if ((uVar13 & 0x20) != 0) {
                            uVar43 = 0;
                            local_d8 = uVar31;
                          }
                        }
                        if (!bVar39) {
                          FUN_00052380(0x11c,unaff_EDI + 0x59c3e,*puVar22,
                                       *(undefined4 *)(uVar13 * 0x10 + puVar22[1]));
                        }
                        if ((local_a8 & local_d8) == 0 && (uVar43 & uVar25) == 0) {
                          if ((local_c0 + 1 <= (int)(uint)*(ushort *)(piVar23 + 0xb)) ||
                             (iVar38 = FUN_00031110(), iVar38 == 0)) {
                            bVar39 = true;
                            *(int **)(piVar23[0xc] + local_c0 * 4) = piVar34;
                            local_a8 = local_a8 | local_d8;
                            uVar25 = uVar25 | uVar43;
                            local_c0 = local_c0 + 1;
                            goto LAB_000a05b6;
                          }
                          goto LAB_000a0ba5;
                        }
                        bVar39 = true;
                        piVar34 = piVar34 + 0xc;
                      } while (piVar34 < piVar32);
LAB_000a0663:
                      uVar25 = ~uVar25;
                      uVar13 = ~local_a8 | 0x80000000;
                    }
                    else {
                      uVar25 = 0xffffffff;
                      uVar13 = 0xffffffff;
                      local_c0._0_2_ = 0;
                      local_74 = 0;
                    }
                    *(undefined2 *)(piVar23 + 10) = (undefined2)local_c0;
                    *(undefined2 *)(piVar23 + 6) = (undefined2)local_c0;
                    piVar23[9] = 0x4241;
                    uVar43 = piVar30[uVar11 * 0x11 + 0xf];
                    uVar13 = uVar13 & piVar30[uVar11 * 0x11 + 0x10];
                    sVar2 = *(short *)((int)puVar22 + 0x2a);
                    uVar31 = 0x3f;
                    if (sVar2 < 0x40) {
                      uVar31 = (int)sVar2;
                    }
                    if (0 < sVar2) {
                      uVar26 = 0;
                      do {
                        bVar8 = (byte)uVar26 & 0x1f;
                        uVar27 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;
                        if ((uVar26 & 0x20) != 0) {
                          uVar27 = uVar13 >> ((byte)uVar26 & 0x1f);
                        }
                        local_c0 = (local_c0 + 1) - (uint)((uVar27 & 1) == 0);
                        uVar26 = uVar26 + 1;
                      } while (uVar31 != uVar26);
                    }
                    if (piVar30[uVar11 * 0x11 + 0x10] < 0) {
                      local_c0 = local_c0 + -0x3f + (int)sVar2;
                    }
                    piVar34 = (int *)FUN_00028510(local_3c);
                    if (piVar34 != (int *)0x0) {
                      iVar38 = 0;
                      uVar26 = 0;
                      piVar23[8] = (int)piVar34;
                      *piVar34 = unaff_EDI + 0x59c58;
                      piVar34[3] = (int)puVar22;
                      piVar35 = (int *)local_d0[0x18];
                      if (piVar35 < piVar32) {
                        local_78 = 0;
                        do {
                          while( true ) {
                            iVar16 = iVar38 * 2;
                            iVar14 = FUN_00030fa0(uVar40);
                            if (iVar14 != 0) break;
LAB_000a07a0:
                            piVar35 = piVar35 + 0xc;
                            if (piVar32 <= piVar35) goto LAB_000a0858;
                          }
                          uVar27 = piVar35[7];
                          uVar18 = 0;
                          uVar33 = 0x80000000;
                          if ((int)uVar27 < 0x40) {
                            bVar39 = (uVar27 & 0x20) == 0;
                            uVar33 = (uint)!bVar39 << ((byte)uVar27 & 0x1f);
                            uVar18 = (uint)bVar39 << ((byte)uVar27 & 0x1f);
                          }
                          if ((local_78 & uVar33) != 0 || (uVar26 & uVar18) != 0) goto LAB_000a07a0;
                          uVar26 = uVar26 | uVar18;
                          local_70 = (undefined2)uVar27;
                          local_78 = local_78 | uVar33;
                          *(undefined2 *)(piVar34[1] + iVar16) = local_70;
                          puVar19 = (undefined4 *)FUN_0005dbf0();
                          puVar20 = &UNK_00064bb9 + unaff_EDI;
                          if (puVar19 != (undefined4 *)0x0) {
                            puVar20 = (undefined *)*puVar19;
                          }
                          iVar16 = iVar16 + 2;
                          piVar35 = piVar35 + 0xc;
                          *(undefined **)(piVar34[8] + iVar38 * 4) = puVar20;
                          iVar38 = iVar38 + 1;
                        } while (piVar35 < piVar32);
LAB_000a0858:
                        uVar26 = iVar38 * 4;
                      }
                      else {
                        iVar16 = 0;
                      }
                      local_84 = &UNK_00064bb9 + unaff_EDI;
                      iVar14 = piVar34[1];
                      if (sVar2 < 1) {
                        puVar36 = (undefined2 *)(iVar14 + iVar16);
                      }
                      else {
                        uVar27 = 0;
                        do {
                          uVar26 = iVar38 * 4;
                          iVar16 = iVar38 * 2;
                          puVar36 = (undefined2 *)(iVar14 + iVar16);
                          bVar8 = (byte)uVar27 & 0x1f;
                          uVar18 = (uVar25 & uVar43) >> bVar8 | uVar13 << 0x20 - bVar8;
                          if ((uVar27 & 0x20) != 0) {
                            uVar18 = uVar13 >> ((byte)uVar27 & 0x1f);
                          }
                          if ((uVar18 & 1) != 0) {
                            *puVar36 = (short)uVar27;
                            uVar26 = uVar26 + 4;
                            *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;
                            iVar14 = piVar34[1];
                            iVar38 = iVar38 + 1;
                            puVar36 = (undefined2 *)(iVar14 + 2 + iVar16);
                          }
                          uVar27 = uVar27 + 1;
                        } while (uVar31 != uVar27);
                      }
                      if ((piVar30[uVar11 * 0x11 + 0x10] < 0) &&
                         (0x3f < *(short *)((int)puVar22 + 0x2a))) {
                        iVar16 = 0x3f;
                        while( true ) {
                          *(short *)(iVar14 + iVar38 * 2) = (short)iVar16;
                          iVar16 = iVar16 + 1;
                          *(undefined **)(piVar34[8] + iVar38 * 4) = local_84;
                          iVar38 = iVar38 + 1;
                          if (*(short *)((int)puVar22 + 0x2a) <= iVar16) break;
                          iVar14 = piVar34[1];
                        }
                        uVar26 = iVar38 * 4;
                        puVar36 = (undefined2 *)(piVar34[1] + iVar38 * 2);
                      }
                      *puVar36 = 0xffff;
                      *(undefined **)(piVar34[8] + uVar26) = local_84;
                      iVar16 = piVar10[10];
                      piVar10[10] = iVar16 + 1;
                      local_b8[2] = iVar16;
                      FUN_000497a0(local_c0 + 1,0);
                      FUN_0005c7b0();
                      uVar11 = (uint)*(byte *)(local_b8 + 9);
                      iVar16 = *(int *)(local_d0[0x13] + 4);
                      iVar14 = uVar11 * 0x44 + iVar16;
                      if ((*(byte *)(iVar14 + 0x2d) & 0x10) == 0) {
                        iVar14 = FUN_000497a0(0,0);
                        local_b4 = (int *)0x0;
                      }
                      else {
                        local_b4 = (int *)FUN_000497a0(0,0);
                        FUN_000497a0(0,*(undefined4 *)(iVar14 + 0x20));
                        iVar14 = FUN_000497a0(0,0);
                      }
                      if (local_74 != 0) {
                        iVar28 = piVar10[0xe];
                        iVar37 = iVar28 + -1;
                        piVar10[0xe] = iVar37;
                        FUN_000958f0(piVar10,local_74,iVar37,0x10,iVar28);
                        piVar23[9] = piVar23[9] | 0x20000;
                      }
                      if (*(char *)((int)piVar10 + 0x13) == '\0') {
                        iVar28 = piVar10[0xb] + 1;
                        piVar10[0xb] = iVar28;
                      }
                      else {
                        bVar8 = *(char *)((int)piVar10 + 0x13) - 1;
                        *(byte *)((int)piVar10 + 0x13) = bVar8;
                        iVar28 = piVar10[bVar8 + 0x24];
                      }
                      iVar37 = FUN_0009c790(iVar28,0,0,0,0);
                      FUN_000497a0(iVar28,0);
                      if (0 < piVar17[0x1a]) {
                        *(undefined2 *)(piVar17[0x19] + piVar17[0x1a] * 0x14 + -0x12) = 0x10;
                      }
                      if (local_74 != 0) {
                        FUN_00049570();
                      }
                      if ((*(byte *)(iVar16 + 0x2d + uVar11 * 0x44) & 0x10) == 0) {
                        FUN_000497a0(iVar14 + 1,0);
                      }
                      else {
                        if ((int)local_b4 < 0) {
                          local_b4 = (int *)(piVar17[0x1a] + -1);
                        }
                        puVar20 = &UNK_000ac9e5 + unaff_EDI;
                        if (*(char *)(*piVar17 + 0x4d) == '\0') {
                          puVar20 = (undefined *)(piVar17[0x19] + (int)local_b4 * 0x14);
                        }
                        *(int *)(puVar20 + 8) = iVar37 + iVar38;
                        iVar16 = uVar11 * 0x44 + iVar16;
                        FUN_00030ec0(local_b8[1],*(undefined4 *)(iVar16 + 0x28),1);
                        FUN_000497a0(iVar14,0);
                        pbVar1 = (byte *)(iVar16 + 0x2d);
                        *pbVar1 = *pbVar1 & 0xef;
                      }
                      iVar38 = piVar17[0x1a];
                      if (0 < iVar38) {
                        *(undefined2 *)(piVar17[0x19] + iVar38 * 0x14 + -0x12) = 3;
                        iVar38 = piVar17[0x1a];
                      }
                      if (iVar14 < 0) {
                        iVar14 = iVar38 + -1;
                      }
                      puVar20 = &UNK_000ac9e5 + unaff_EDI;
                      if (*(char *)(*piVar17 + 0x4d) == '\0') {
                        puVar20 = (undefined *)(piVar17[0x19] + iVar14 * 0x14);
                      }
                      *(int *)(puVar20 + 8) = iVar38;
                      if (iVar28 != 0) {
                        FUN_0002f640();
                      }
                      iVar38 = piVar17[0x1a] + -1;
                      if (-1 < iVar12) {
                        iVar38 = iVar12;
                      }
                      puVar20 = &UNK_000ac9e5 + unaff_EDI;
                      if (*(char *)(*piVar17 + 0x4d) == '\0') {
                        puVar20 = (undefined *)(piVar17[0x19] + iVar38 * 0x14);
                      }
                      *(int *)(puVar20 + 8) = piVar17[0x1a];
                    }
LAB_000a0ba5:
                    if (local_74 != 0) {
                      FUN_00039fe0();
                    }
                    if (*(char *)(iVar4 + 0x4d) != '\0') goto LAB_000a0bd0;
                  }
                  piVar17 = (int *)piVar10[0x1d];
                  if ((int *)piVar10[0x1d] == (int *)0x0) {
                    piVar17 = piVar10;
                  }
                  if (*(char *)((int)piVar17 + 0xc5) == '\x02') {
                    FUN_00067300(uVar29);
                  }
                  local_b8[8] = *(int *)(iVar3 + 0x68);
                  iVar12 = local_88 + 1;
                  uVar40 = FUN_0009d860(local_88,local_b8,uVar40);
                  local_d0[8] = local_b8[6];
                  local_b8 = local_b8 + 0x11;
                  local_88 = iVar12;
                } while (local_a0 != iVar12);
                goto LAB_000a0bf2;
              }
            }
          }
        }
        else {
LAB_000a0070:
          iVar38 = local_4c;
          piVar17 = local_58[0];
          uVar11 = iVar12 + 8 + (uint)*(byte *)((int)local_58[0] + 0x2e) * 0x44;
          uVar13 = iVar12 + 8;
          iVar12 = *(int *)*local_58[0];
          *(undefined4 *)(local_4c + 0x24) = 0;
          local_40 = 20000;
          *(int *)(local_4c + 0x30) = local_4c + 0x38;
          *(undefined2 *)(local_4c + 0x28) = 0;
          *(undefined2 *)(local_4c + 0x2c) = 3;
          if (uVar13 < uVar11) {
            cVar7 = '\0';
            do {
              *(char *)(iVar38 + 0x10) = cVar7;
              local_40 = local_40 + 1000;
              if (piVar17[0x7a] < 1) {
                uVar25 = 0;
                uVar43 = 0;
              }
              else if (*(int *)(uVar13 + 0x28) == piVar17[0x7b]) {
                uVar25 = 1;
                uVar43 = 0;
              }
              else {
                uVar25 = 0;
                do {
                  uVar31 = uVar25 + 1;
                  if (uVar31 == piVar17[0x7a]) {
                    uVar25 = 0;
                    uVar43 = 0;
                    goto LAB_000a014b;
                  }
                  iVar16 = uVar25 + 0x7c;
                  uVar25 = uVar31;
                } while (*(int *)(uVar13 + 0x28) != piVar17[iVar16]);
                bVar8 = (byte)uVar31 & 0x1f;
                uVar26 = 1 << ((byte)uVar31 & 0x1f);
                uVar25 = uVar26;
                uVar43 = 0 << bVar8 | 1U >> 0x20 - bVar8;
                if ((uVar31 & 0x20) != 0) {
                  uVar25 = 0;
                  uVar43 = uVar26;
                }
              }
LAB_000a014b:
              *(uint *)(iVar38 + 8) = uVar25;
              *(uint *)(iVar38 + 0xc) = uVar43;
              if (*(int *)(*(int *)(uVar13 + 0x10) + 0x38) == 0) {
                iVar16 = FUN_00064890();
                uVar43 = 0;
                local_d8 = 0;
              }
              else {
                uVar25 = uVar13 + 0x44;
                uVar43 = 0;
                local_d8 = 0;
                while (uVar25 < uVar11) {
LAB_000a0d2c:
                  uVar31 = uVar25;
                  uVar25 = uVar25 + 0x44;
                  if (local_d8 == 0 && uVar43 == 0) {
                    while (uVar25 = uVar31 + 0x44, (*(byte *)(uVar31 + 0x24) & 10) == 0) {
                      uVar31 = uVar25;
                      if (uVar11 <= uVar25) goto LAB_000a0d7c;
                    }
                  }
                  if (piVar17[0x7a] < 1) {
LAB_000a0d70:
                    if (uVar11 <= uVar25) break;
                    goto LAB_000a0d2c;
                  }
                  if (*(int *)(uVar31 + 0x28) != piVar17[0x7b]) {
                    uVar26 = 0;
                    while (uVar27 = uVar26 + 1, piVar17[0x7a] != uVar27) {
                      iVar16 = uVar26 + 0x7c;
                      uVar26 = uVar27;
                      if (*(int *)(uVar31 + 0x28) == piVar17[iVar16]) {
                        uVar31 = uVar27 >> 5 & 1;
                        uVar26 = uVar31 << ((byte)uVar27 & 0x1f);
                        uVar31 = (uVar31 ^ 1) << ((byte)uVar27 & 0x1f);
                        goto LAB_000a0dc9;
                      }
                    }
                    goto LAB_000a0d70;
                  }
                  uVar31 = 1;
                  uVar26 = 0;
LAB_000a0dc9:
                  uVar43 = uVar43 | uVar31;
                  local_d8 = local_d8 | uVar26;
                }
LAB_000a0d7c:
                iVar16 = FUN_0005b240(uVar43,local_d8);
              }
              if ((iVar16 == 0) &&
                 ((*(char *)((int)local_58[1] + 9) == '\0' ||
                  (iVar16 = FUN_000650b0(uVar43,local_d8), iVar16 == 0)))) {
                uVar9 = (undefined2)(uVar43 >> 0x10);
                if (*(char *)(iVar12 + 0x4d) != '\0') break;
              }
              else {
                uVar9 = (undefined2)(uVar43 >> 0x10);
                if (iVar16 != 0x65) {
                  FUN_000310d0();
                  goto LAB_000a0bd0;
                }
                FUN_00052380(0x1c,unaff_EDI + 0x66219);
              }
              cVar7 = cVar7 + '\x01';
              uVar13 = uVar13 + 0x44;
            } while (uVar13 < uVar11);
          }
          FUN_000310d0();
          FUN_00063ca0();
          if (*(char *)(iVar4 + 0x4d) == '\0') {
            if (local_d0[2] == 0) goto LAB_000a0ea8;
            FUN_00063ca0(CONCAT22(uVar9,(short)local_d0[0x12]));
            if (*(char *)(iVar4 + 0x4d) == '\0') goto LAB_000a0239;
          }
        }
      }
LAB_000a0bd0:
      piVar10[0x20] = local_d0[10];
      FUN_0003a3b0();
    }
    else if (local_d0 != (int *)0x0) {
      FUN_00026590();
      local_d0 = (int *)0x0;
      goto LAB_000a0bf2;
    }
  }
  local_d0 = (int *)0x0;
LAB_000a0bf2:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_d0;
LAB_000a14dd:
  iVar16 = (int)*(short *)(*(int *)(iVar38 + 4) + uVar11 * 2);
  if (iVar16 < 0) {
    if (iVar16 != -1) goto LAB_000a14f9;
  }
  else if (*(char *)(iVar16 * 0x10 + *(int *)(*(int *)(iVar38 + 0xc) + 4) + 0xc) == '\0') {
LAB_000a14f9:
    uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
    goto LAB_000a13d9;
  }
LAB_000a1320:
  uVar13 = (uint)*(ushort *)(iVar38 + 0x32);
  uVar11 = uVar11 + 1;
  if ((int)uVar13 <= (int)uVar11) goto LAB_000a13d9;
  goto LAB_000a132f;
LAB_000a13d9:
  if (uVar11 == uVar13) goto LAB_000a13e1;
LAB_000a12f0:
  iVar38 = *(int *)(iVar38 + 0x14);
  if (iVar38 == 0) goto LAB_000a1530;
  goto LAB_000a12fb;
}

